问题
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
来源:https://stackoverflow.com/questions/3900896/python-question-about-factory-functions