Python 静态方法,类方法,属性方法
方法的使用 |
静态方法
- 只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性。
class Dog(object): def __init__(self,name): self.name = name # 静态方法实际上根类没什么关系,单纯变成一个函数。 @staticmethod def eat(self,food): print("%s is eating %s" %(self.name,food))
类方法
- 只能访问类变量,不能访问实例变量
class Dog(object): n = 333 def __init__(self,name): self.name = name @classmethod #只能访问类变量 def eat(self,food): print("%s is eating %s" %(self.n,food))
使用场景:只能用写死的类变量。
属性方法
- 把一个方法变成一个静态属性。
class Dog(object): n = 333 def __init__(self,name): self.name = name @property #把一个方便变为静态属性 def eat(self): print("%s is eating %s" %(self.name,"dd")) d = Dog("ChenRonghua") d.eat
属性方法的用法
# 创建属性方法: @property # 修改属性方法: @eat.setter # 删除属性方法: @eat.deleter class Dog(object): def __init__(self,name): self.name = name self.__food = None @property #把一个方便变为静态属性 def eat(self): print("%s is eating %s" %(self.name,self.__food)) @eat.setter #属性方法修改,添加元素 def eat(self,food): #创建相同名称函数的方法名 print("set to food:",food) self.__food = food @eat.deleter #属性方法删除 def eat(self): del self.__food print("删完了") d = Dog("ChenRonghua") #实例化 d.eat #不添加元素,输出 d.eat = "baozi" #赋值元素,需要两个同名函数 d.eat #赋值后输出 #输出结果 #ChenRonghua is eating None #set to food: baozi #ChenRonghua is eating baozi #删完了
使用场景:对用户来讲不需要关心后台的工作,只需要一步实,例名.属性 执行就可以。