我有一些课程:
class Window(object):
def __init__(self, name):
self.wind_name = name
def getWindowName(self):
return 'wnd' + self.wind_name
class Control(object):
def __init__(self, name, wnd):
self.contrl_name = name
setattr(self, 'getWindowName', wnd.getWindowName)
setattr(self, 'wind_name', wnd.wind_name)
def getControlName(self):
return (self.getWindowName(), 'unk' + self.contrl_name)
class Button(Control):
def __init__(self, name, wnd):
super(Button, self).__init__(name, wnd)
def getControlName(self):
return (self.getWindowName(), 'btn' + self.contrl_name)
wnd = Window('MyApp')
btnOK = Button('OK', wnd)
btnOK.getControlName() # work ok., return ('wndMyApp', 'btnOK')
btnOK.wind_name = 'NewApp'
btnOK.getControlName() # does not work properly., return ('wndMyApp', 'btnOK')
如何从类Window
扩展类Control
{
有没有办法不在类控件中创建字段self.wnd = wnd
,或者在Window
中添加方法setWindowName
。。。?在
我无法从类Window
继承类Control
!这不符合逻辑。在
Python允许从多个类继承,即
但在这种情况下,您应该确切地知道自己在做什么(说到Pythons方法解析顺序(MRO))。我建议你读这本小书:Python Attributes and Methods。在
可以将属性用于属性
相关问题 更多 >
编程相关推荐