def choose_class(name):
if name == 'foo':
class Foo(object):
pass
return Foo # 返回的是类,不是类的实例
else:
class Bar(object):
pass
return Bar
Myclass = choose_class('foo')
print(Myclass)
<class '__main__.choose_class.<locals>.Foo'>
print(Myclass())
<__main__.choose_class.<locals>.Foo object at 0x0000000004612518>
一般上面的方法不建议用,因为类是一等公民.
另外一种动态创建类的方法 type()方法,格式如下:
#先看传统方法
class person:
pass
p1 = person()#这样我们就简单的创建了person类的实例化对象
#再看第二种用type()的方法
#类名 = type("类名",(父类),{字典类型的属性})
Test = type("Test2",(),{})
t1 = Test()
cars = ["bmw","audi","toyota","subaru"]
print("the original car list is : ")
print(cars)
print("the sorted list is:")
print(sorted(cars))
print("the original car list is:")
print(cars)
#the original car list is :
#['bmw', 'audi', 'toyota', 'subaru']
#the sorted list is:
#['audi', 'bmw', 'subaru', 'toyota']
#the original car list is:
#['bmw', 'audi', 'toyota', 'subaru']