Python - question about factory functions

2019-09-16 17:12发布

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条回答
做个烂人
2楼-- · 2019-09-16 17:25

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
查看更多
登录 后发表回答