Python 项目常用知识点(记录一下,懒得多次重复查询)

python class

from abc import ABC
#ABC为一个抽象基类 等我理解了一定加上为什么用这个抽象基类的解释
class Test(ABC):
    def __init__(self): #类方法
        self.a = 1 #类实例变量
    _a = 10 #类成员变量
    __b = 5 #当类成员变量或方法前加__的话表示只能在类内使用

    def private_test(self):
        print(self.__b)
    
    @classmethod
    def public_test(cls):
        print(cls._a)

print(Test._a) 
#我们一般推荐用类名来访问成员变量
#这是因为改写类成员变量时 所有对象访问该成员变量时的值也会被修改

Test.public_test()

t = Test() # Test是类,t是该类的一个对象
print(t.a) #只有将类实例化才可以访问类实例变量
t.private_test()

@property
Python 类变量装饰器

类的成员变量在类外不通过类型检查直接赋值是一件很危险的事情,所以最好是加上get set函数和__,然后set时加上类型检查就好了

from abc import ABC

class Student(ABC):

    def __init__(self):
        self._value = 10

    def get_value(self):
        return self._value

    def set_value(self, value):
        if isinstance(value, int):
            self._value = value

s = Student()
s.set_value(60)
print(s.get_value())

但是这样就很麻烦

于是  我们可以用@property装饰器来优化一下代码

from abc import ABC

class Student(ABC):

    def __init__(self):
        self._value = 10

    @property
    def value(self):
        return self._value

    @value.setter
    def value(self, value):
        if isinstance(value, int):
            self._value = value

# Test.a = 'str' 这就很危险了

s = Student()
s.value = 60
print(s.value)

当然可以不写set函数  这样该变量就成为了一个只读变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值