我想知道以下两种选择中的哪一种更好,或者更像Pythonic:
直接使用__init__
参数作为__init__
中调用的函数的参数:
def class A(object):
def __init__(self, x):
self.x = x # I would like to do this anyway
self.y = foo(x)
# More code
使用作为参数副本的__init__
属性作为__init__
内调用的函数的参数:
def class B(object):
def __init__(self, x):
self.x = x # I would like to do this anyway
self.y = foo(self.x)
# More code
A和B类的行为应该相同。但是:
第一种选择是不那么冗长,因为避免了很多self.
打字,而且代码更具可读性。
对于代码中的进一步更改,第二种替代方案可能更加健壮。
A或B中的哪一个更好?或者也许没关系?
答案 0 :(得分:2)
这很重要。不必输入self
就好了,Python不必进行属性查找。
但是,如果self.x
是一个属性,它在某种程度上会在设置或获取时转换该值,那么您别无选择,具体取决于是否需要使用原始属性x
或已转换的self.x
。