我在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')
我困惑了一段时间,不知道该怎么办,感谢所有答复
答案 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中输入了内容,一切顺利