python的类中有几个加了装饰器的特殊方法成员:静态方法、类方法、属性方法
python之属性方法:
在方法头加上@property,就是一个属性方法。
属性方法是把一个方法变成静态属性,调用时候不需要加小括号()。
class Dog(object):
def __init__(self, name):
self.name = name
'''属性方法'''
@property #属性方法,调用不加(),吧一个方法变成静态属性
def eat(self):
print('属性方法')
d = Dog('dog1')
d.eat
但是这样不能传入参数了,如果要让他能够传入参数,就得在写一个eat方法并且使用装饰器@eat.setter,这个方法需要提前在init里初始化一个私有属性,然后才可以赋值。同时也可以把它当属性一样删除,需要@eat.deleter:
class Dog(object):
def __init__(self, name):
self.name = name
self.__food = None
'''属性方法eat'''
@property
def eat(self): #如果要传入参数,就得在写一个eat方法并且@eat.setter
print('属性方法:%s吃了%s'%(self.name,self.__food))
@eat.setter
def eat(self, food):
self.__food = food
@eat.deleter #可以把方法当作属性一样删除
def eat(self):
del self.__food
print('删除完了私有属性')
d = Dog('dog1')
d.eat = '肉'
d.eat