gpt4 book ai didi

python - __init__ 方法中的属性 setter ?

转载 作者:行者123 更新时间:2023-12-04 02:04:03 24 4
gpt4 key购买 nike

我有这种假设情况,我需要检查 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 函数有什么用?我在这里做错什么了吗?

最佳答案

您实际上并没有调用属性 setter 。您直接设置“私有(private)”变量。

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

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

请记住,属性允许您抽象出内部实现细节( cost_cost 的公共(public)接口(interface))。但是,如果您直接操作 _cost你自己,那么你的界面将不会在初始化期间警告用户。

关于python - __init__ 方法中的属性 setter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com