gpt4 book ai didi

python - 存在属性时 __init__ 之外的属性

转载 作者:行者123 更新时间:2023-12-02 15:09:53 25 4
gpt4 key购买 nike

Pylint 告诉我,我在 __init__ 之外设置了 _age,这在风格上不太好,我明白了为什么。但是,如果我使用属性来确保我的属性在某个时间间隔内设置,那么在属性 setter 中设置属性确实有意义。我该如何调和这两种相反的想法?

class Person:
def __init__(self, age, height, weight):
self.age = age

@property
def age(self):
return self._age

@age.setter
def age(self, age):
if 18 <= age <= 81:
self._age = age
else:
raise ValueError('You are either too old or too young')

最佳答案

真的没有正确地实现 getter/setter。您应该在 init 中做的实际上是设置 self._age = age:

def __init__(self, age, height, weight):
self._age = age

通过该更正,现在一切都会根据您的设计按预期工作:

p = Person(1, 2, 3)
p.age = 10

输出:

ValueError: You are either too old or too young

非异常(exception):

p = Person(1, 20, 3)
p.age = 22
age = p.age
print(age)

输出:22

关于python - 存在属性时 __init__ 之外的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741654/

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