Почему он говорит, что super() принимает по крайней мере 1 аргумент

#python #inheritance

#python #наследование

Вопрос:

     class Member():
    def __init__(self, MemberName, MemberID, SubcribtionPaid):
        self.__MemberName = MemberName
        self.__MemberID = MemberID
        self.__SubcribtionPaid = False
    def SetMemberName(self):
        print(MemberName,self.__MemberName)
    def SetMemberID (self):
        print(MemberID,self.__MemberID)
    def SetSubcriptionPaid(self):
        print(SubcribtionPaid,self.__SubcribtionPaid)





class Jmember(Member):
    def__init__(self,MemberName,MemberID,SubcribtionPaid,DateofJoining):
        super().__init__(MemberName,MemberID,SubcribtionPaid)
        self.__DateofJoining = DateofJoining
    def SetDateofBirth(self):
        print(DateofBirth,self.__DateofJoining)



NewMember = Jmember("Armeen","1245","True","12/3/2015")
NewMember.SetMemberName()
NewMember.SetMemberID()
NewMember.SetSubcriptionPaid()
NewMember.SetDateofJoining()
  

Я в основном скопировал вставленный код.Я использовал pycharm. Я все еще не понимаю, как использовать блок кода. Я не знаю, что делать.

Извините, если я вызвал проблему.

Я написал код на python, где один класс наследует атрибуты другого класса. Когда я запускаю код, в строке 26 возникает ошибка, в которой говорится, что super() принимает не менее 1 аргумента.Несмотря на то, что я написал аргументы. Я допустил ошибку там. Код, трассировка

Я хочу увидеть вывод нового участника, который включает имя участника, идентификатор, оплаченную подписку и дату присоединения. Но отображается ошибка.

Комментарии:

1. Вместо ссылки на изображение было бы лучше опубликовать ваш фрагмент в блоках кода, чтобы люди могли копировать / вставлять его, чтобы играть с кодом, если захотят. Вы можете сделать то же самое с обратной трассировкой, чтобы она лучше отображалась в вашем сообщении. используйте 3 обратных тика до и после вашего кода, чтобы использовать блоки кода.

2. Кроме того, опубликуйте полную обратную трассировку. Фактическая ошибка может возникать перед указанной строкой.

3. У вас нет кода в строке 24, на который вы ссылались. Вы указываете на правильный код?

4. Трассировка — это ваш стек сообщений об ошибках, который tbm отредактировал для вас в кодовый блок. Но вам нужно включить полное сообщение об ошибке.

5. Codeblock — это способ форматирования вашего кода, чтобы он красиво отображался в вашем сообщении. Вы добавляете 3 обратных символа (над вашей клавишей tab) до и после раздела кода, который вы хотите отформатировать.

Ответ №1:

Обновил мой пост, чтобы отразить ваш опубликованный код:

  1. Вы сказали, что используете PyCharm. обратите внимание на красные волнистые линии под разделами, поскольку они указывают на ошибки.

Первая ошибка: у вас не было пробела между def и init

 def__init__(self, MemberName, MemberID, SubcribtionPaid):
  

Вторая ошибка: найдена в вызовах функций вашего класса:
Вам не нужно вызывать класс, который по сути является тем, что делает (self)

 def SetMemberName(self):
        print(MemberName,self.__MemberName)
  

Третья ошибка: была обнаружена в вашей трассировке
Вы пытались вызвать функцию, которую забыли создать

 Traceback (most recent call last):
  File "/Users/sumbody/Projects/Python/MemberTest2/main.py", line 29, in <module>
    NewMember.SetDateofJoining()
AttributeError: 'Jmember' object has no attribute 'SetDateofJoining'
  

Вот рабочий код:

 class Member():
    def __init__(self, MemberName, MemberID, SubcribtionPaid):
        self.__MemberName = MemberName
        self.__MemberID = MemberID
        self.__SubcribtionPaid = False
    def SetMemberName(self):
        print(self.__MemberName)
    def SetMemberID (self):
        print(self.__MemberID)
    def SetSubcriptionPaid(self):
        print(self.__SubcribtionPaid)

class Jmember(Member):
    def __init__(self,MemberName,MemberID,SubcribtionPaid,DateofJoining):
        super().__init__(MemberName,MemberID,SubcribtionPaid)
        self.__DateofJoining = DateofJoining
    def SetDateofBirth(self):
        print(self.__DateofJoining)

    def SetDateofJoining(self):
        print(self.__DateofJoining)



NewMember = Jmember("Armeen","1245","True","12/3/2015")
NewMember.SetMemberName()
NewMember.SetMemberID()
NewMember.SetSubcriptionPaid()
NewMember.SetDateofJoining()
  

Несколько советов: когда вы учитесь кодировать и отлаживать свой собственный код, неплохо взять некоторый код, который выполняется, а затем сломать его. Это звучит странно, но при этом вы научитесь распознавать ошибки при просмотре в редакторе и во время выполнения. Счастливого кодирования!