假设我有一个父类foo
和一个继承类bar
,定义如下:
class foo(object):
def __init__(self, args):
for key in args.keys():
setattr(self, key, args[key])
self.subinit()
def subunit(self):
pass
...
import math
class bar(foo):
def __init__(self, arg1, arg2, ...):
args = locals()
del args['self']
super(foo, self).__init__(args)
def subunit(self):
super(foo, self).subinit()
self.arg1 = math.radians(self.arg1)
self.arg2 = math.radians(self.arg2)
...
...
我已经bar
重写了由父类foo
定义的函数subinit
。但是,由于我是从超类构造函数内部执行self.subinit()
行。我担心的是,foo
的subinit
定义将被用来代替bar
的subinit
。那么,我的问题是:这里的执行范围是什么?如果我从超类构造函数调用subinit
,它将在实例的总体范围内工作并调用bar.subinit()
,还是在函数的范围内工作并调用foo.subinit()
为了回答我自己的问题,我在稍微调整了一下示例之后运行了一个测试:
范围似乎是在对象的整体中,而不仅仅是在超类中。因此,
bar.subinit()
被调用。很高兴知道相关问题 更多 >
编程相关推荐