抱歉,如果答案很明显,但是我想确定是否(在Python中):
class Name(object):
def __init__(self):
self.int_att1 = 0
self.int_att2 = 0
self.list_att = []
为什么不能(我知道你可以,但是我从未见过程序员这样做),你用这种方式初始化它:
class Name(object):
def __init__(self):
self.int_att1 = int
self.int_att2 = int
self.list_att = list
由此带来的不良影响吗?
是什么使前者更具Pythonic?
我最好的猜测是,因为Python需要instance.attribute的值。但是,如果是这种情况,那么为什么使用数据类型有效呢?
最佳答案
当您执行self.int_att1 = int
时,属性int_att1
现在引用类型int
,这只是int
的另一个名称。我将以一种简单的方式证明这一点:
>>> number_type = int
>>> i = number_type()
>>> i
0
>>> type(i)
<type 'int'>
在这段代码中,
number_type
成为类型int
的“同义词”,这就是为什么当我询问i
类型时,它返回int
而不是number_type
的原因。与
self.list_att = list
相同。可能您想做的是:
class Name(object):
def __init__(self):
self.int_att1 = int()
self.int_att2 = int()
self.list_att = list()
这是完全不同的,您不再需要将类型分配给属性。相反,您要分配该类型的初始值。让我们看看这些初始值是什么:
>>> initial_int = int()
>>> initial_int
0
>>> initial_list = list()
>>> initial_list
[]
因此,我们可以清楚地看到类型
int
的初始值为0
,类型list
的初始值为[]
,这正是您所需要的!关于class - 为什么在Python中使用数据类型初始化实例很不好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8752959/