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”。如果以后有人想出我正在寻找的这种神奇的解决方案,我将切换接受的答案。
添加回答
举报