#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:
Обновил мой пост, чтобы отразить ваш опубликованный код:
- Вы сказали, что используете 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()
Несколько советов: когда вы учитесь кодировать и отлаживать свой собственный код, неплохо взять некоторый код, который выполняется, а затем сломать его. Это звучит странно, но при этом вы научитесь распознавать ошибки при просмотре в редакторе и во время выполнения. Счастливого кодирования!