【发布时间】:2010-04-23 08:07:14
【问题描述】:
我有一个这样的代码 sn-p
class A(object):
class b:
def print_hello(self):
print "Hello world"
b = property(b)
我想覆盖内部类b(请不要担心小写名称)行为。比如说,我想添加一个新方法或者我想更改一个现有方法,例如:
class C(A):
class b(A.b):
def print_hello(self):
print "Inner Class: Hello world"
b = property(b)
现在,如果我将C 的对象创建为c = C(),并调用c.b,我会得到TypeError: 'property' object is not callable error。我将如何通过这个并调用扩展内部类的print_hello?免责声明:我不想更改A 类的代码。
更新:基类“A”试图模拟我在其中一个开源 api 中看到的类。所以这就是为什么我不想更改核心 api,而是根据自己的需要对其进行扩展。
【问题讨论】:
-
正如 Evgeny 所说,对 property() 的调用应该做什么?使用您的原始代码,您甚至无法在没有错误的情况下执行 A().b。如果您要尝试描述您要实现的目标,而不是向我们提供可能会有所帮助的破碎解决方案。
标签: python inheritance inner-classes