I have a series of classes that I'll be registering as services to a higher level abstraction class. The high-level class will have a function that gets the lower level class based on init args, etc. Does this sound berserk? Also, what is this called? I call it factory function/class, but I really have no idea (which makes it harder to Google best practices).
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
It's called "metaclass programming". In recent versions of Python it's implemented by defining the __new__()
static method and returning an object of the appropriate type.
class C(object):
def __new__(cls, val):
if val == 5:
return 'five'
else:
return super(C, cls).__new__(cls)
c1 = C(3)
print c1
c2 = C(5)
print c2