为什么mypython类未定义?

时间:2018-12-04 02:44:00

标签: python python-3.x

我在cmd dos中运行了我的python代码,它在下面返回了err

 File "counts.py", line 3, in <module>
 class Student(object):
File "counts.py", line 11, in Student
if Student.count != 0:
NameError: name 'Student' is not defined

这是我的python代码

# -*- coding: utf-8 -*-
import sys
class Student(object):
  count = 0
  def init(self,name):
    self.name = name
    Student.count += 1  
    if Student.count != 0:
      print('test fail')
    else:
      elson = Student('elson')
      if Student.count != 1:
          print('fail')
      else:
        print('there are %d student'%Student.count)
        print('succeed')

我困惑了一段时间,不知道该怎么办,感谢所有答复

2 个答案:

答案 0 :(得分:0)

如果您的代码与您发布的代码完全相同,我发现了一些问题(首先,由于我无法确切了解您要查找的输出,因此请在没有任何内容写信的情况下更新我的信息这对您有意义,因此我可以重新编写我的答案): 1)您的缩进是错误的,因此您的功能不在类之列。

2)在函数内部调用对象时,在使用self的情况下,应使用Student而不是类名。

3)您正在将类声明与对象实例化混合在一起,因此,当添加以下代码时,对我来说,您似乎试图在对象声明内实例化一个对象,这意味着即使它可以工作,您可以创建一个无限循环:

if Student.count != 0:
        print('test fail')
else :
    elson = Student('elson')

解决方案是在类中编写时更改所有Student.,并添加self.,例如:

def init(self,name):
  self.name = name
  self.count += 1 # or count +=1

PS:如果要迭代实例化的对象数,并以此方式更新计数,则也可以使用类方法。只需在迭代计数的方法之前添加@classmethod

答案 1 :(得分:-1)

问题解决了,我发现这是因为我的ultraedit的支持存在问题。我在vscode中输入了内容,一切顺利