簡體   English   中英

存在屬性時__init__之外的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM