2016-12-10 4 views
1

Я написал класс под названием cl:Атрибут ошибки в классе атрибута

class cl : 
def __int__(self): 
    self.a = 0 


def increment(self): 
    self.a +=1 

def print_a(self): 
    print ("value : "+str(self.a)) 

Я написал еще один класс с именем test. Однако при вызове методов я получил ошибку.

from cl import * 

class test : 
    def __int__(self): 
     self.b = 0 
     self.c = cl() 


def main(self): 
    self.c.increment() 
    self.c.print_a() 
    self.c.increment() 
    self.c.print_a() 

d = test() 
d.main() 

То, что я получил это:

Traceback (most recent call last): 
    File "test_file.py", line 19, in <module> 

    d.main() 
    File "test_file.py", line 12, in main 
    self.c.increment() 
AttributeError: test instance has no attribute 'c' 

Может кто-нибудь объяснить, почему это происходит и что проблема с моим кодом? Я ученик средней школы. Можешь мне объяснить? И можете ли вы помочь мне исправить это?

ответ

2

Вы опечатка __init__ с __int__:

class cl : 
    def __int__(self): 
     self.a = 0 

Должно быть

class cl : 
    def __init__(self): 
     self.a = 0 

Обратите внимание, что охватывает основной метод внутри из test класса действительно антишаблоном в Python; форма

def main(): 
    ... 

if __name__ == "__main__": 
    main() 

является предпочтительным и является более Pythonic.

Для некоторой ссылки на if __name__ == "__main__" модели, см:

+0

Спасибо, сэр за вашу любезную помощь, можете ли вы немного объяснить механизм или можете ли вы дать мне ссылку на ссылку? –

0

основная функция не принадлежит тест класса, он принадлежит test.py который ваш тестовый класс в, поэтому сам в main test.py, а не тест

Смежные вопросы