类的使用
定义类的关键字是class
类名原则上符合标识符命名规范,通常采用大驼峰命名风格
在类名后需要加’:’
类的内容要整体缩进
示例:
class Cat:
def eat(self):
print('这是吃饭方法')
def sleep(self):
print('这是睡觉方法')
#创建对象
tom = Cat()
print(tom)
#属性还可动态添加
tom.name = '汤姆'
tom.age = 5
print(tom.name,tom.age)
#调用实例方法
tom.eat()
tom.sleep()
__str__方法
python类内置方法,该方法必须返回一个字符串,当你重写了__str__的返回值后,使用print打印对象,就会打印出__str__的返回值
示例
class Person:
def __str__(self):
return '我叫%s,今年%s岁'%(self.name,self.age)
#创建一个人对象
p=Person()
p.name = '库里'
p.age = '32'
print(p)
__init__方法
python类中自带的方法,它为初始化方法,当给这个类创建一个对象后会自动调用该方法,可以进行初始化设置
示例
class Cat:
def __str__(self):
return 'name:%s,age:%s,color:%s'%(self.name, self.age, self.color)
def __init__(self, name, age, color):
# print('初始化方法')
self.name = name
self.age = age
self.color = color
jiafei = Cat('加菲',2,'橘黄色')
print(jiafei
__del__方法
python类中自带的方法,当对象释放时,系统会自动调用,该方法一般做资源释放操作
示例
class Pig:
def __del__ (self):
print('析构方法')
pig = Pig()
del pig
print('释放资源')
常用的内置函数
__setattr__当设置属性时会自动调用
__getattr__当获取不存在的属性时会自动触发
__delattr__销毁对象的指定属性时会自动触发
class Person:
def __init__(self,name):
print('初始化方法')
self.name = name
def __setattr__(self,key,value):
print(key,value)
self.__dict__[key] = value
def __getattr__(self,item):
if item =='age':
return 18
else:
return '保密'
def __delattr__(self,item):
print(item,'属性即将销毁')
xiaoming = Person('小明')
#xiaoming.name = '小明'
print(xiaoming.age)
print(xiaoming.height)
print(xiaoming.__dict__)
del xiaoming.name
print(over)
__setitem__将对象当做字典操作时,添加或在设置属性时自动触发
__getitem__将对象当做字典操作时,根据键获取值时会自动触发
__delitem__将对象当做字典操作时,根据键销毁属性时会自动触发
class Person:
def __setitem__(self, key, value):
# print(key, value)
self.__dict__[key] = value
def __getitem__(self, item):
# print(item)
return self.__dict__.get(item)
def __delitem__(self, key):
print(key, '属性即将销毁')
del self.__dict__[key]
xiaoming = Person()
# xiaoming.name = '小明'
# print(xiaoming.name)
xiaoming['name'] = '小明'
print(xiaoming['name'])
del xiaoming['name']
print(xiaoming['name'])