为什么mypython类没有定义?

2024-04-20 06:41:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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')

我一时糊涂,不知如何是好,谢谢你的回复


Tags: 代码nameinpyselfifobjectcount
2条回答

问题解决了,我发现这是因为我的ultraedit的支持有一些问题。我在vscode中输入了它,一切都很顺利

如果您的代码与您发布的完全一致,我发现了一些问题(首先,我无法理解您要查找的输出,因此请更新我,以防我在此处编写的任何内容对您没有意义,以便我可以重新编写我的答案): 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:如果您希望迭代实例化的对象的数量,并以这种方式更新计数,那么您也可以使用class方法。只需在迭代计数的方法之前添加@classmethod。你知道吗

相关问题 更多 >