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