让我说以下
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获取所有数据和过程属性。那么为什么这不起作用?
答案 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
我认为代码是自我解释的。希望有帮助