怎么样:
class Base:
VAL1 = "hello"
class Derived1(Base):
VAL1 = Base.VAL1
def foo(self, x=VAL1):
print(x)
d = Derived1()
d.foo()
编辑:
我不确定它是否好看,但它更自动化,也许更适合你。
import inspect
class Base:
VAL1 = "hello"
VAL2 = "world"
class Derived1(Base):
for var, val in inspect.getmembers(Base):
locals()[var] = val
def foo(self, x=VAL1, y=VAL2):
if x == self.VAL1:
print "yay"
if y == self.VAL2:
print "hoorah!"
d1 = Derived1()
d1.foo()
双重编辑:
如果你不想复制
__doc__
和
__module__
,你可以用
for var, val in inspect.getmembers(Base):
if(var[:2] != '__'):
locals()[var] = val
据我所知,这在Python中并不常见,所以我猜大多数解决方案都会有点难看(但我很想看到一个反例!)