如何从父类继承函数?

时间:2018-12-11 08:38:07

标签: python python-3.x class inheritance

让我说以下

 class cls1():   
    def __init__(self, num):  
        self.num = num  
    def square(self):  
        return self.num*self.num 

然后创建一个子类。

class cls2(cls1):
    k1 = super().square(self)

基本上我想使用父类的平方函数。但这给出了错误RuntimeError: super(): no arguments
如果我直接按以下方式使用平方函数

class cls2(cls1):
        k1 = square(self)

这将导致错误NameError: name 'square' is not defined
我不明白是什么问题。这就是继承的意思吧? cls2应该自动从cls1获取所有数据和过程属性。那么为什么这不起作用?

3 个答案:

答案 0 :(得分:1)

您什么也不需要做。
尽管您对class BookList(object): def __init__(self): # creating dict, not list self.booklist = {} def add_book(book, isbn): self.booklist[book] = isbn 的定义不正确,但是仅需要Super()来执行父级的class方法:

cls2

打印:

class cls1():   
    def __init__(self, num):  
        self.num = num  
    def square(self):  
        return self.num * self.num


class cls2(cls1):
    pass


c1 = cls1(5)
print ('C1:', c1.square())

c2 = cls2(8)
print ('C2:', c2.square())

答案 1 :(得分:1)

如前所述,如果只想显示square方法,则无需执行任何操作,它会自动继承。如果您想要一种方法k1执行square的操作,则可以执行以下操作:

class cls2(cls1):
    k1 = cls1.square

答案 2 :(得分:0)

这可能是您想要的:

offsetY = 150
我认为代码是自我解释的。希望有帮助