为什么说super()接受至少1个参数

时间:2019-04-20 18:19:07

标签: python inheritance

    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个参数。即使我编写了这些参数。我在那弄错了吗? The codethe traceback

我想查看新成员的输出,其中包括成员名称,id,已支付的订阅费用和加入日期。但是显示错误。

1 个答案:

答案 0 :(得分:1)

更新了我的帖子,以反映您发布的代码:

  1. 您说您正在使用PyCharm。请注意各节下的红色波浪线指出错误。

第一个错误:def和 init

之间没有空格
def__init__(self, MemberName, MemberID, SubcribtionPaid):

第二个错误:在您的类函数调用中发现: 您不必调用本质上(自已)正在执行的类

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()

一些建议,在学习编码和调试自己的代码时,获取一些可以运行的代码然后将其破坏不是一件坏事。这听起来很怪异,但是这样做的话,您将学会在编辑器中和运行时看到错误。编码愉快!