2016-06-18 6 views
-3
class MyClass: 
    sample=0 
    w=0 
    b=0 
    g=0 
    o=0 
    color_list=['black','white','gray'] 

    def __init__(self): 
     print("Enter Your Name") 
     MyClass.name=input() 
     print("What's the color of ur car?") 
     MyClass.color=input() 
     MyClass.sample=MyClass.sample+1 

    def check_color(self): 
     if MyClass.color in MyClass.color_list: 

      if MyClass.color==MyClass.color_list[0]: 
       MyClass.b=MyClass.b+1 
      elif MyClass.color==MyClass.color_list[1]: 
       MyClass.w=MyClass.w+1 
      else: 
       MyClass.g=MyClass.g+1 
     else: 
      MyClass.o=MyClass.o+1 

    def display_result(self): 
     print("Hello :",MyClass.name) 
     print("Total number of black cars",MyClass.b) 
     print("Total number of white cars",MyClass.w) 
     print("Total number of gray cars",MyClass.g) 
     print("Other cars",MyClass.o) 
     print("Sample Size",MyClass.sample) 

    var=0 
    mylist=[] 
    while var<4: 
     mylist.append(MyClass()) 
     mylist[var].check_color() 
     mylist[var].display_result() 
     var=var+1 

Ошибка в Python IDLE:Класс не определен

==== RESTART: C:/Python34/Practice Programs/TBT Tutorials/Day 4/class.py ==== 
Traceback (most recent call last): 
    File "C:/Python34/Practice Programs/TBT Tutorials/Day 4/class.py", line 1, in <module> 
    class MyClass: 
    File "C:/Python34/Practice Programs/TBT Tutorials/Day 4/class.py", line 41, in MyClass 
    mylist.append(MyClass()) 
NameError: name 'MyClass' is not defined 
+0

я не уверен, если я установил свои отступы, так как он выглядит как основная часть коды в определении класса, могли бы вы пожалуйста [ отредактируйте] (http://stackoverflow.com/review/spected-edits/12729507) ваш вопрос, если я не понял это правильно. –

+0

Используйте 'self' для обращения к экземпляру, из которого может быть больше одного. 'MyClass' относится к самому классу и недоступен до тех пор, пока класс не будет определен. У вас также есть много кода класса, который может быть не таким, каким вы хотите. –

ответ

0

использования self вместо MyClass внутри класса

0

Вы ссылающийся свой класс в вашем classbody:

class Myclass: 

    ... 
    mylist = [] 
    mylist.append(Myclass) 

, но термин Myclass не определяется во время выполнения вашего тела класса.

Похоже, что вы перепутали отступы и должно быть

class Myclass: 
    ... 
mylist = [] 
mylist.append(Myclass) 

, который будет работать.

Кроме того, вы должны прочитать о различии между классом и объектом класса, потому что код, вероятно, не тот, который вы хотите.

0

Проблема заключается в отступе последнего раздела кода - так оно и есть, оно делается частью Myclass, которое находится в процессе определения и еще не существует!

Чтобы устранить эту проблему просто Unindent его на один уровень:

class MyClass: 
    sample=0 
    w=0 
    b=0 

    ... 

     else: 
      MyClass.o=MyClass.o+1 

    def display_result(self): 
     print("Hello :",MyClass.name) 
     print("Total number of black cars",MyClass.b) 
     print("Total number of white cars",MyClass.w) 
     print("Total number of gray cars",MyClass.g) 
     print("Other cars",MyClass.o) 
     print("Sample Size",MyClass.sample) 

# unindent these lines 
var=0 
mylist=[] 
while var<4: 
    mylist.append(MyClass()) 
    mylist[var].check_color() 
    mylist[var].display_result() 
    var=var+1 
Смежные вопросы