Python 是旧样式吗?
读到新闻风格与旧风格属性的区别,我感到困惑。在本例中:Python 是旧样式吗?,python,pygame,python-2.7,new-style-class,Python,Pygame,Python 2.7,New Style Class,读到新闻风格与旧风格属性的区别,我感到困惑。在本例中: 此代码是否使用旧式方法修改属性 在Event()atself.\uu指令更新(kw) 我是否使用getattr、getattr或getattribute 对于Dispatcher.dispatch\u to\u parent() 代码来自 类事件(对象): def uuu init uuuu(self,name,kw={}): self.name=名称 自我记录更新(千瓦) self.dict=dict(千瓦) self.method\u
Event()
atself.\uu指令更新(kw)
Dispatcher.dispatch\u to\u parent()
类事件(对象):
def uuu init uuuu(self,name,kw={}):
self.name=名称
自我记录更新(千瓦)
self.dict=dict(千瓦)
self.method\u name='EVT\u%s'%self.name
定义报告(自我):
返回“”%(self.name,self.dict)
类调度程序(对象):
def添加(自身、其他):
如果isinstance(其他,调度程序):
其他。父母=自己
其他:
raise VALUERROR(“%s”不是调度程序“%other”)
def移除(自身、其他):
如果isinstance(其他,调度程序):
如果other.parent是self:
del other.parent
其他:
raise VALUERROR(“%s不是我的孩子。”%other)
其他:
raise VALUERROR(“%s”不是调度程序“%other”)
def调度(自身、事件):
method=getattr(self,event.method\u name,None)
如果方法不是无:
返回方法(事件)
其他:
自我分派给家长(事件)
def分派给父级(自身、事件):
parent=getattr(self,'parent',None)
如果父项不是无:
dispatch=getattr(父级“dispatch”,无)
如果分派不是无:
退货派送(事件)
类根(调度程序):
定义初始化(自):
调度程序。\uuuuu初始化\uuuuuuuuuuuuu(自)
self.focused_node=self
def焦点(自身、节点):
如果节点是自聚焦的\u节点:返回
打印“聚焦”,节点
self.focused_node.dispatch(事件('BLUR'))
self.focused_node=节点
node.dispatch(事件('FOCUS'))
def模糊(自身,节点):
self.focused_node=self
node.dispatch(事件('BLUR'))
def post(自身、事件名称、千瓦):
事件=事件(事件名称,kw)
返回自聚焦节点调度(事件)
如果名称=“\uuuuu main\uuuuuuuu”:
类按钮(调度程序):
def EVT_按键关闭(自身、事件):
回归自我
#创建根节点,它是所有事件的接收者。
r=根()
#创建一个按钮节点
b=按钮()
#将按钮节点添加到应用程序
r、 加(b)
#给予按钮节点焦点,它现在将接收事件
r、 焦点(b)
#发布按键事件,按钮将接收该事件
打印r.post('KeyDown')
#发布退出事件,按钮将不会收到该事件。
#此事件将传递到按钮父级
打印r.post(“退出”)
#post方法的返回值是处理事件的节点
您不应该直接更新实例字典,您将绕过自定义设置程序。循环键并执行setattr。您不应该直接更新实例字典,您将绕过自定义setter。循环键并进行设置属性。在def post(self,event\u name,kw)中缺少一个*:
行
为了使您的函数能够接收dict作为参数,您需要在变量名称之前添加**:
def post(self, event_name, **kw):
event = Event(event_name, kw)
return self.focused_node.dispatch(event)
def post(self,event\u name,kw)中缺少一个*:
行
为了使您的函数能够接收dict作为参数,您需要在变量名称之前添加**:
def post(self, event_name, **kw):
event = Event(event_name, kw)
return self.focused_node.dispatch(event)
这段代码中的所有类都是新样式的类。不过,我不太清楚您在问什么。在旧样式的类中,
\uu dict\uu
属性不可用…此代码中的所有类都是新样式的类。不过,我不太清楚您在问什么。在旧式类中,\uu dict\uu
属性不可用。。。