__init__方法中的属性设置器?

karun_r

在这种假设情况下,我需要检查是否Phone正在创建价格低于100实例,如果是,则必须警告用户价格不能低于100。

我在此示例中使用以下内容:

class Phone(object):
    def __init__(self,v):
        self._cost = v

    @property
    def cost(self):
        return self._cost

    @cost.setter
    def cost(self,value):
        if value < 100:
            print("Cost cannot be less than 100")
        else:
             self._cost = value

s8 = Phone(98)

但是此代码不会让用户知道无法创建价格低于100的电话。如果在初始化对象时无法检查值,那么在Python中为属性设置setter函数有什么用?我在这里做错什么吗?

亚历山大·侯萨(Alexander Huszagh)

您实际上并没有在调用属性设置器。您直接设置“私有”变量。

如果要警告用户,则需要执行以下操作:

def __init__(self,v):
    self.cost = v

请记住,属性允许您抽象出内部实现细节(cost,通过这种方式,是的公共接口_cost)。但是,如果您直接操纵_cost自己,则您的界面在初始化期间将不会警告用户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章