试图打印学生姓名有什么问题?

时间:2016-11-26 11:00:04

标签: python oop

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

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

3 个答案:

答案 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')