gpt4 book ai didi

python - setter、getter 和 __set__、__get__ 之间的区别

转载 作者:行者123 更新时间:2023-12-01 02:52:58 25 4
gpt4 key购买 nike

代码:

class Pizza:
def __init__(self, toppings):
self.toppings = toppings
self._pineapple_allowed = False

@property
def pineapple_allowed(self):
return self._pineapple_allowed

@pineapple_allowed.setter
def pineapple_allowed(self, value):
if value:
password = input("Enter the password: ")
if password == "Sw0rdf1sh!":
self._pineapple_allowed = value
else:
raise ValueError("Alert! Intruder!")

我很困惑 @<func>.setter装饰器不同于仅仅覆盖 __set__对象中的函数。与 @<func>.getter 相同和__get__

就此而言,我想不出 @property 的用例不仅仅是在类中设置变量。

我的想法是错的吗?

最佳答案

使用“@property”描述符,您可以控制单个类属性,在您的情况下cls.pineapple_allowed,而__get__、__set__和__delete__是描述符协议(protocol)本身的神奇方法。如果您在任何类中覆盖上述任何方法,则任何类属性的访问/分配/删除都将通过相应的魔术方法进行。

关于python - setter、getter 和 __set__、__get__ 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44530931/

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