python3 50个练习例子之创建可管理的对象属性

class Rectangle:
    def __init__(self,radius=0):
        self.line = line

    def getArea(self):
        return self.line * 2
        
    def getLine(self):
        return self.line

    def setLine(self,value):
        # 加强校验
        if not isinstance(value,(int,float)):
            raise ValueError("wrong type.")
        self.line = float(value)

rect = Rectangle()
rect.line= "abc" # 这样不加控制就有安全问题
rect.area() # "abcabc"  

rect.setLine('abc') #  ValueError: wrong type.    

# 但这样调用又会麻烦,能不能像rect.line ,rect.line='xx' 这样操作

# property(fget=None, fset=None, fdel=None, doc=None)
class Rectangle:
    def __init__(self,radius=0):
        self.radius = radius

    def getArea(self):
        return self.radius * 2

    def getLine(self):
        return self.radius

    def setLine(self,value):
        # 加强校验
        if not isinstance(value,(int,float)):
            raise ValueError("wrong type.")
        self.radius = float(value)

    line = property(getLine,setLine);


rect = Rectangle()
rect.line = 55 # 可以
rect.line = '44' # ValueError: wrong type.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值