Python类方法重载
我该怎么重载类的方法呢?我尝试过,但失败了:
class D(object):
def create(self):
foo = 100
bar = 'squirrels'
baz = 'I have %d insane %s in my head.' % (foo, bar)
return baz
class C(D):
def create(self):
super(C, self).create()
baz = 'I have %s cute %s in my yard.' % (self.foo, self.bar)
C().create()
错误信息是:
AttributeError: 'C' object has no attribute 'foo'
2 个回答
0
在 D.create
这个函数里,你没有把变量放到 self
上,这就意味着变量 foo
只是这个函数内部的局部变量。
class D(object):
def create(self):
self.foo = 100
self.bar = 'squirrels'
self.baz = 'I have %d insane %s in my head.' % (self.foo, self.bar)
return self.baz
3
你尝试把局部变量当作类的属性来使用。试着做以下的修改:
class D(object):
def create(self):
self.foo = 100
self.bar = 'squirrels'
baz = 'I have %d insane %s in my head.' % (self.foo, self.bar)
return baz
class C(D):
def create(self):
super(C, self).create()
print self.foo
self.baz = 'I have %s cute %s in my yard.' % (self.foo, self.bar)
C().create()