Python类方法重载

1 投票
2 回答
1176 浏览
提问于 2025-04-17 06:02

我该怎么重载类的方法呢?我尝试过,但失败了:

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

撰写回答