2 回答

TA貢獻1770條經驗 獲得超3個贊
class A:
def __init__(self, parameter):
self._variable_1 = function_1(parameter)
self._variable_2 = function_2(parameter)
self._variable_3 = function_3(parameter)
@property
def variable_1(self):
return self._variable_1
@variable_1.setter
def variable_1(self, value):
self._variable_1 = function_1(value)
... so on and so forth for other variables ...
a = A(parameter1)
# update based on parameters
a.variable_1 = parameter2
我覺得使用屬性可以更好地更新變量。

TA貢獻1871條經驗 獲得超8個贊
在https://stackoverflow.com/a/19292653/3863847中,sthenault 給出了可讀性作為不應在外部聲明實例變量的原因__init__
。
據我所知,這植根于 PEP 8,這就是 pylint 抱怨違規行為的原因——我從不選擇 B。
sthenault 還建議在 中進行無分配__init__
,就像 progmatico 在我的問題下方的評論中所做的那樣,這對應于我的版本 C。
盡管我希望有一個優雅的技巧以某種方式規避這種情況,但我暫時將 C 視為“最 Pythonic”。如果以后有人想出我正在尋找的這種神奇的解決方案,我將切換接受的答案。
添加回答
舉報