Когда вы делаете 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
равно []
и это именно то, что вы искали!