立即登录

注册账号

联系我们

2021年12月22日 19:13

10.3 属性方法静态方法类方法

1.  方法属性化@property, @kind.setter设置 @kind.deleter删除

class Cat:
    __kind = '猫'
    def __init__(self,name):
        self.name = name

    @property
    def kind(self):
        return self.__kind

    @kind.setter
    def kind(self,kind):
        self.__kind = kind

    @kind.deleter
    def kind(self):
        del self.__kind

xb = Cat('小白')

设置setter和deleter两个作用, 1. 权限分离, 分别控制  2. 封装

使用一下:

xb.kind = '橘猫' # 调用的kind.setter
xb.kind
del xb.kind # 调用kind.deleter 
xb.kind # 删除以后就没有kind属性了,执行会报错

2. 静态方法
- 只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性。
- 什么时候用, 类中要想实现某个功能,功能和类本身没有关联, 操作对类本身没有任何影响

class Dog:
    def __init__(self,name):
        self.name = name

    # 静态方法实际上根类没什么关系,单纯变成一个函数。self并不能调用name
    @staticmethod
    def eat(name,food):
        return "%s正在吃%s" %(name,food)

xh = Dog('小黑')
xh.eat('小白','骨头')

3. 类方法

- 只能访问类属性,不能访问实例(对象)属性

class Dog:
    kind = '狗'
    def __init__(self,name):
        self.name = name

    @classmethod
    def eat(cls,food):
        print("%s正在吃%s" %(cls.kind,food))

xh = Dog('小黑')
xh.eat('骨头') # 狗正在吃骨头

以上案例中, 类方法, 参数改为cls, 只能调用类属性kind ,不能调用对象属性name

留言

给我留言