抱歉,如果答案很明显,但是我想确定是否(在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/

10-12 07:40
查看更多