我正在练习Python继承,并已编写此代码,

class College:

    def __init__(self,clgName = 'KIIT'):
        self.collegename = clgName
    def showname(self):
        return(self.collegename)

class Student(College):
    def __init__(self,studentName,studentRoll):
        super().__init__(self)
        self.studentname = studentName
        self.studentroll = studentRoll
    def show(self):
        print(self.studentname,self.studentroll,self.collegename)



p = Student('ram',22)
p.show()


我希望答案像ram 22 KIIT,但显示为ram 22 <__main__.Student object at 0x00000238972C2CC0>

那我在做什么错?以及如何打印所需的o / p?
请指导我,提前谢谢。

@Daniel Roseman先生,谢谢您清除我的疑虑,因此,如果我想通过这种方式获得相同的结果,则不必显示super.__init__()

 class College:

    def __init__(self,clgName):
        self.collegename = clgName
    def showname(self):
        return(self.collegename)

class Student(College):
    def __init__(self,studentName,studentRoll):
        super().__init__()
        self.studentname = studentName
        self.studentroll = studentRoll
    def show(self):
        print(self.studentname,self.studentroll,self.collegename)


c=College('KIIT')
c.showname()
p = Student('ram',22)
p.show()

最佳答案

您正在将self明确传递给超级__init__调用;代替了clgname参数。您无需将其传递到那里,就像调用任何其他方法一样,因此self被隐式传递。

class Student(College):
    def __init__(self,studentName,studentRoll):
        super().__init__()
        ...

10-06 03:26