例如,我有一个基类,如下所示:
class BaseClass(object):
def __init__(self, classtype):
self._type = classtype
我从这个类中派生了其他几个类,例如
class TestClass(BaseClass):
def __init__(self):
super(TestClass, self).__init__('Test')
class SpecialClass(BaseClass):
def __init__(self):
super(TestClass, self).__init__('Special')
有没有一种很好的pythonic方法,可以通过函数调用动态创建这些类,将新类放到我当前的作用域中,比如:
foo(BaseClass, "My")
a = MyClass()
...
因为会有评论和问题,为什么我需要这样:派生类都有完全相同的内部结构,只是不同之处在于,构造函数接受许多以前未定义的参数。例如,MyClass
接受关键字a
,而类TestClass
的构造函数接受b
和c
。
inst1 = MyClass(a=4)
inst2 = MyClass(a=5)
inst3 = TestClass(b=False, c = "test")
但是它们永远不应该使用类的类型作为输入参数,比如
inst1 = BaseClass(classtype = "My", a=4)
我得到了这个工作,但我更喜欢另一种方式,即动态创建类对象。
发布于 2013-03-06 20:19:40
type()
是创建类的函数,特别是创建子类的函数,如下面的问题:
def set_x(self, value):
self.x = value
# type() takes as argument the new class name, its base
# classes, and its attributes:
SubClass = type('SubClass', (BaseClass,), {'set_x': set_x})
# (More methods can be put in SubClass, including __init__().)
obj = SubClass()
obj.set_x(42)
print obj.x # Prints 42
print isinstance(obj, BaseClass) # True
发布于 2019-10-10 22:57:21
要创建具有动态属性值的类,请查看以下代码。注意:这是python编程语言的代码片段。
def create_class(attribute_data, **more_data): # define a function with required attributes
class ClassCreated(optional extensions): # define class with optional inheritance
attribute1 = adattribute_data # set class attributes with function parameter
attribute2 = more_data.get("attribute2")
return ClassCreated # return the created class
# use class
myclass1 = create_class("hello") # *generates a class*
https://stackoverflow.com/questions/15247075
复制相似问题