[英]Attributes outside of __init__ in the presence of properties
Pylint告訴我,我將_age
設置在__init__
之外,這在樣式上不太好,我明白了原因。 但是,如果我使用屬性來確保在一定間隔內設置屬性,那么在屬性設置器中設置屬性確實很有意義。 我如何調和這兩個相反的想法?
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')
您並沒有真正正確地實現吸氣劑/吸氣劑。 實際上,您應該在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
不例外:
p = Person(1, 20, 3)
p.age = 22
age = p.age
print(age)
輸出:22
顯然,idjaw給出的答案會誤解代碼的設計,從而跳過了他嘗試將“ age”設置為1時應引發的異常。
pylint異常似乎是一個從未解決的已知問題 。 最好的選擇就是使用# pylint: disable=attribute-defined-outside-init
內聯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.