这是我的代码。我试图打印一个学生的名字,但我收到了很多错误。我做错了什么?非常感谢你!
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
答案 0 :(得分:0)
您的__str__
方法缺少%
运算符:
def __str__(self):
return "%s" % (self.nume)
如果您使用了正确的样式,并且操作员之间有空格,那么这将更容易看到。
答案 1 :(得分:0)
从你得到的错误来看,问题似乎是该课程的最后一项功能。见下文:
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
答案 2 :(得分:0)
除了缩进之外,您的代码还存在两个问题:
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)
在没有参数的情况下调用super
时,您不需要提供self
参数,但需要提供父期望的所有其他三个参数:
def __init__(self,nume,cnp,an):
self.an=an
super().__init__(nume,cnp, 'foo')