1. @staticmethod 静态方法
class People(object): def __init__(self,name): self.name = name @staticmethod # 静态方法,不能访问实例变量和类变量,和类实际没啥关系,除了把它放到类里面,然后通过类来调用它。 def getname(self,sex): # 虽然有self,但是需要调用的时候手动传入实例。 print(‘%s is a %s‘ %(self.name,sex)) people = People(‘LaoWang‘) people.getname(people,‘man‘) # 想要访问实例变量,只能手动传递实例进入!如果写成:people.getname(‘man‘)会报错。
2. classmethod 类方法
class People(object): age = 30 def __init__(self,name): self.name = name @staticmethod # 静态方法,不能访问实例变量和类变量,和类实际没啥关系,除了把它放到类里面,然后通过类来调用它。 def getname(self,sex): # 虽然有self,但是需要调用的时候手动传入实例。 print(‘%s is a %s‘ %(self.name,sex)) @classmethod # 类方法,只能访问类变量,不能访问实例变量,如果要访问实例变量,需要手动传入实例。 def getage(cls): print(‘age is %s‘ % cls.age) people = People(‘LaoWang‘) people.getname(people,‘man‘) # 想要访问实例变量,只能手动传递实例进入!如果写成:people.getname(‘man‘)会报错。 people.getage()
3. @property 属性方法,把一个方法变成属性,调用时不加括号。
class People(object): age = 30 def __init__(self,name): self.name = name @staticmethod # 静态方法,不能访问实例变量和类变量,和类实际没啥关系,除了把它放到类里面,然后通过类来调用它。 def getname(self,sex): # 虽然有self,但是需要调用的时候手动传入实例。 print(‘%s is a %s‘ %(self.name,sex)) @classmethod # 类方法,只能访问类变量,不能访问实例变量,如果要访问实例变量,需要手动传入实例。 def getage(cls): print(‘age is %s‘ % cls.age) @property # 属性方法,把一个方法变成属性。调用时不用加括号。 def eat(self): print(‘%s is eating.‘ %self.name) people = People(‘LaoWang‘) people.getname(people,‘man‘) # 调用静态方法。想要访问实例变量,只能手动传递实例进入!如果写成:people.getname(‘man‘)会报错。 people.getage() # 调用类方法。 people.eat # 调用属性方法。不加括号
属性方法的修改和删除:
class People(object): age = 30 def __init__(self,name): self.name = name @staticmethod # 静态方法,不能访问实例变量和类变量,和类实际没啥关系,除了把它放到类里面,然后通过类来调用它。 def getname(self,sex): # 虽然有self,但是需要调用的时候手动传入实例。 print(‘%s is a %s‘ %(self.name,sex)) @classmethod # 类方法,只能访问类变量,不能访问实例变量,如果要访问实例变量,需要手动传入实例。 def getage(cls): print(‘age is %s‘ % cls.age) @property # 属性方法,把一个方法变成属性。调用时不用加括号。 def eat(self): print(‘%s is eating.‘ %self.name) @eat.setter # 属性的修改 def eat(self,food): print(‘This is eat setter: %s‘ %food) @eat.deleter # 属性的删除 def eat(self): print(‘eat has been deleted.‘) people = People(‘LaoWang‘) people.getname(people,‘man‘) # 调用静态方法。想要访问实例变量,只能手动传递实例进入!如果写成:people.getname(‘man‘)会报错。 people.getage() # 调用类方法。 people.eat # 调用属性方法。不加括号 people.eat = ‘suger‘ # 调用eat.setter del people.eat # 调用eat.deleter
原文:https://www.cnblogs.com/wztshine/p/11848214.html