Ошибка O / P в наследовании Python? - PullRequest
0 голосов
/ 04 мая 2018

Я практикую наследование 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? пожалуйста, направляй меня, спасибо заранее.

@ Дэниэл Роузман Спасибо, сэр, что прояснил мои сомнения, поэтому, если я хотел бы получить такой же результат тем способом, который я должен сделать, а не его показом 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()

1 Ответ

0 голосов
/ 04 мая 2018

Вы явно передаете self вызову super __init__; это занимает место параметра clgname. Вам не нужно передавать его туда, это как вызов любого другого метода, поэтому self передается неявно.

class Student(College):
    def __init__(self,studentName,studentRoll):
        super().__init__()
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...