python 类的成员

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

猜你喜欢

转载自www.cnblogs.com/wztshine/p/11848214.html
今日推荐