Ошибка типа: __init __ () принимает 4 позиционных аргумента, но 7 были заданы - PullRequest
0 голосов
/ 25 апреля 2018
class Employee(object):
    def __init__(self,ename,salary,dateOfJoining):
        self.ename=ename
        self.salary=salary
        self.dateOfJoining=dateOfJoining
    def output(self):
        print("Ename: ",self.ename,"\nSalary: ",self.salary,"\nDate Of 
Joining: ",self.dateOfJoining)
class Qualification(object):
    def __init__(self,university,degree,passingYear):
        self.university=university
        self.degree=degree
        self.passingYear=passingYear
    def qoutput(self):
        print("Passed out fom University:",self.university,"\nDegree:",self.degree,"\Passout year: ",self.passingYear)
class Scientist(Employee,Qualification):
    def __int__(self,ename,salary,dateOfJoining,university,degree,passingYear):
        Employee.__init__(self,ename,salary,dateOfJoining)
        Qualification.__init__(self,university,degree,passingYear)
    def soutput(self):
        Employee.output()
        Qualification.output()
a=Scientist('Ayush',20000,'21-04-2010','MIT','B.Tech','31-3-2008')
a.soutput()

Я не могу найти решение проблемы и не могу понять, почему произошла TpyeError. Я новичок в питоне. Спасибо

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Ваш конструктор класса Scientist написан с ошибкой как __int__ вместо __init__. Поскольку не существует переопределенного конструктора для использования в классе Scientist, он поднимается на уровень в цепочке наследования и использует конструктор Employee, который фактически использует только 4 позиционных аргумента. Просто исправьте опечатку, и она должна работать.

(есть несколько других плохих вещей, которые вы делаете с классами в своем коде, но я позволю другим людям комментировать с советами)

0 голосов
/ 25 апреля 2018

В вашем классе ученого есть функция init, записанная в виде:

def __int__

вместо

def __init__

Так что случилось, что он унаследовал функцию init от своего родительского класса, который получает меньшепараметры, которые вы отправили в класс.

Кроме того, вместо вызова init для родителей, вы должны использовать супер функцию.

super(PARENT_CLASS_NAME, self).__init__()

Это, очевидно, относится ко всем родительским функциям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...