1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class FromString(type):
__class_dict = {}
def __new__(cls, name, bases, dct):
klass = type.__new__(cls, name, bases, dct)
FromString.__class_dict[name] = klass
return klass
@staticmethod
def get(name):
return FromString.__class_dict[name]
class A(object):
__metaclass__ = FromString
def salut(self):
print "salut A"
class B(object):
__metaclass__ = FromString
def salut(self):
print "salut B"
>>> A()
<__main__.A object at 0x01202070>
>>> A().salut()
salut A
>>> FromString.get("A")().salut()
salut A |
Partager