我试图创建一个传递参数x
并返回新类C
的函数.C
应该是固定基类A
的子类,只有一个加法:添加某个类属性,并将其设置为等于x
.
换句话说:
class C(A):
C.p = x # x is the parameter passed to the factory function
这容易吗?我有什么需要注意的问题吗?
我试图创建一个传递参数x
并返回新类C
的函数.C
应该是固定基类A
的子类,只有一个加法:添加某个类属性,并将其设置为等于x
.
换句话说:
class C(A):
C.p = x # x is the parameter passed to the factory function
这容易吗?我有什么需要注意的问题吗?
首先,请注意术语"类工厂"在Python中有些过时.它用于C++语言中,用于返回类的动态类型实例.它有一个名字,因为它在C++中突出;这种情况并不罕见,但非常罕见,因此给模式起个名字很有用.然而,在Python中,这是不断进行的——这是一个如此基本的操作,以至于再也没有人愿意给它起一个特殊的名字了.
另外,请注意,类工厂返回类的实例,而不是类本身.(再次,那是因为它来自C++之类的语言,没有返回类的概念——只有对象.但是,您说过要返回"一个新类",而不是一个类的新实例.
创建一个本地类并返回它很简单:
def make_class(x):
class C(A):
p = x
return C