python重命名窗口_Python:即时重命名方法名称
如果要繼續(xù)在已切換到使用屬性的對(duì)象上使用get_Field和set_Field(您只需訪問或分配給Field),則可以使用包裝器對(duì)象:
class NoPropertyAdaptor(object):
def __init__(self, obj):
self.obj = obj
def __getattr__(self, name):
if name.startswith("get_"):
return lambda: getattr(self.obj, name[4:])
elif name.startswith("set_"):
return lambda value: setattr(self.obj, name[4:], value)
else:
return getattr(self.obj, name)
如果您使用額外的語法(如對(duì)象的索引或迭代),或者您需要使用isinstance識(shí)別對(duì)象的類型,則會(huì)出現(xiàn)問題.
更復(fù)雜的解決方案是創(chuàng)建一個(gè)名稱重寫的子類,并強(qiáng)制對(duì)象使用它.這不完全是一個(gè)包裝,因?yàn)橥獠看a仍將直接處理對(duì)象(因此魔術(shù)方法和isinstance)將按預(yù)期工作.這種方法適用于大多數(shù)對(duì)象,但對(duì)于具有花哨的元類魔法的類型以及某些內(nèi)置類型可能會(huì)失敗:
def no_property_adaptor(obj):
class wrapper(obj.__class__):
def __getattr__(self, name):
if name.startswith("get_"):
return lambda: getattr(self, name[4:])
elif name.startswith("set_"):
return lambda value: setattr(self, name[4:], value)
else:
return super(wrapper, self).__getattr__(name)
obj.__class__ = wrapper
return obj
總結(jié)
以上是生活随笔為你收集整理的python重命名窗口_Python:即时重命名方法名称的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Mysql密码忘记了怎么办?
- 下一篇: 中国磷肥市场发展分析与产能需求调研报告2
