Python 中property 特性的使用方法

import math


class Circle:
    def __init__(self, radius):
        self.radius = radius

    @property
    def area(self):
        return math.pi * self.radius ** 2

    @property
    def diameter(self):
        return self.radius ** 2

    @property
    def perimeter(self):
        return 2 * math.pi * self.radius
c = Circle(20)
print(c.radius)
print(c.area)
print(c.diameter)
print(c.perimeter)

在Python中,我们唱会看到@property 装饰器
这上面这个代码中的例子里面,为只读特性,用来返回数据时,函数作为属性返回。
常规模式下,我们调用需要这样调用

c = circle(20)
print(c.radius)
print(c.area())
print(c.diameter())
print(c.perimeter())

@property 的用法很多,我们还可以用来检测,setattr 值是否符合我们的要求

class Demo:
    def __init__(self,name):
        self.name=name
    @property
    def name(self):
        return self._name
    @demo.setter
    def name(self,value):
        if not isinstance(value,str):
            raise TypeError('Type worng')
        self._name=value

我们可以在子类中对这个方法进行扩展,重载

class SubDemo(Demo):
    #我们根据自己的情况可以选择在子类中对应的方法进行扩展
    @Demo.name.setter
    def name(self,value):
        super(SubDemo,SubDemo).name.__set__(self,value)
    @Demo.name.getter
    def name(self):
        return super().name

诸如此类有很多中用法,大家可以去挖掘!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值