添加方法如何添加一個實例方法使用元類類(是的,我確實需要使用元類)?下面這類作品,但FUNC_NAME仍將是「富」:如何使用元類
def bar(self):
print "bar"
class MetaFoo(type):
def __new__(cls, name, bases, dict):
dict["foobar"] = bar
return type(name, bases, dict)
class Foo(object):
__metaclass__ = MetaFoo
>>> f = Foo()
>>> f.foobar()
bar
>>> f.foobar.func_name
'bar'
我的問題是,一些庫代碼實際上使用FUNC_NAME後來未能找到富實例的「棒」的方法。我可以這樣做:
dict["foobar"] = types.FunctionType(bar.func_code, {}, "foobar")
還有types.MethodType,但我需要一個實例,還沒有存在使用它。我在這裏錯過了些什麼?
你爲什麼要試圖改變方法的名字嗎?不會dict [bar.func_name] = bar完成你想要的嗎? – 2008-09-15 19:03:13
好問題...我最初是根據字典中定義的屬性創建方法名稱,但是如果這些方法的實現是相同的,我意識到這是毫無意義的。 – 2008-09-15 19:30:18