打印学生的名字有什么问题?

2024-06-16 11:02:19 发布

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

这是我的密码。我试图打印一个学生的名字,但我收到了很多错误。我做错了什么?非常感谢

class Elev:
"""
Un elev are nume, cnp,clasa,
"""
def __init__(self,nume,cnp,clasa):
    self.nume=nume
    self.cnp=cnp
    self.clasa=clasa
def set_nume(self,nume):
    self.nume=nume
def get_nume(self):
    return self.nume
def set_clasa(self,clasa):
    self.clasa=clasa
def get_clasa(self):
    return self.clasa
def set_cnp(self,cnp):
    self.cnp=cnp
def get_cnp(self):
    return self.cnp
def merg(self):
    print("Merge la ore")
def __str__(self):
    return "%s"(self.nume)

这是我使用的第二个类:

class Student(Elev):
def __init__(self,nume,cnp,an):
    self.an=an
    super().__init__(self,nume,cnp)
def Vacanta(self):
    print("Nu ai restanta ai vacanta!!!!!")

下面是我如何调用类和函数的

def Main():
student=Student("Popescu Vasile",232423423,1)
print(student.get_nume())

Main()

错误是:

Traceback (most recent call last): File "D:/Facultate/Python/tema_mostenire/tema_mostenire.py", line 36, in <module> Main() File "D:/Facultate/Python/tema_mostenire/tema_mostenire.py", line 34, in Main print(student.get_nume()) File "D:/Facultate/Python/tema_mostenire/tema_mostenire.py", line 24, in str return "%s"(self.nume) TypeError: 'str' object is not callable

Tags: selfangetreturninitmaindefprint
3条回答

除了缩进之外,您的代码还有两个问题:

def __str__(self):
    return "%s"(self.nume)

以上不是有效的Python代码,您可以按照Daniel的建议添加%运算符,也可以修改它以返回名称:

def __str__(self):
    return self.nume

第二个问题是在这里调用父类构造函数的方式:

def __init__(self,nume,cnp,an):
    self.an=an
    super().__init__(self,nume,cnp)

在调用^{}时,如果没有参数,则不需要提供self参数,但需要提供父级所需的所有其他三个参数:

def __init__(self,nume,cnp,an):
    self.an=an
    super().__init__(nume,cnp, 'foo')

您的__str__方法缺少%运算符:

def __str__(self):
    return "%s" % (self.nume)

如果使用适当的样式,运算符之间留有空格,则更容易看到

从您得到的错误来看,问题似乎是类的最后一个函数。请参见以下内容:

class Elev:
 "" Un elev are nume, cnp,clasa, """
 def __init__(self,nume,cnp,clasa):            self.nume=nume self.cnp=cnp self.clasa=clasa 
def set_nume(self,nume): self.nume=nume 
    def get_nume(self): 
    return self.nume 
    def set_clasa(self,clasa): self.clasa=clasa 
    def get_clasa(self): 
    return self.clasa 
    def set_cnp(self,cnp): 
    self.cnp=cnp 
    def get_cnp(self): 
    return self.cnp 
    def merg(self): 
    print("Merge la ore") 
    def __str__(self):
    return "%s" %  (self.nume) #fixed

相关问题 更多 >