擅长:python、mysql、java
<p>您可以为此使用元类:</p>
<pre><code>class VehicleType(type):
registry = {}
def __init__(self, name, bases, attrs):
self.registry[name.lower()] = self
def __call__(self, name):
cls = self.registry[name]
inst = cls.__new__(cls)
inst.__init__()
return inst
class Vehicle(object):
__metaclass__ = VehicleType
class Car(Vehicle):
pass
car = Vehicle("car")
print(type(car)) # <class '__main__.Car'>
</code></pre>
<p>这是通过让类继承进程在元类中注册类,然后重写调用<code>Vehicle</code>的行为来实现的,这样它就可以动态地分派到适当的类</p>