我有一个基类,我想一起派生和实例化。我可以在java中这样做:
BaseClass derivedClassInstance = new BaseClass() {
@override
void someBaseClassMethod() { // my statements}
};
在python中,我可以派生和实例化一个基类,如:
class DerivedClass(BaseClass):
def some_base_class_method():
# my statements
derived_class_instance = DerivedClass()
我需要对一些对象的单个实例进行子类化,并进行微小的更改。分别推导和分配它们似乎有点小题大做。
是否有一种类似java的单行方法来动态地派生和实例化类?或者有没有更简洁的方法来做我在python中做的事情?
通常您不会看到这种代码,因为很难阅读和理解。我真的建议你找一些替代方案,避免接下来发生的事情。话虽如此,您可以在一行中创建类和实例,如下所示:
>>> class BaseClass(object):
... def f1(self, x):
... return 2
... def f2(self, y):
... return self.f1(y) + y
...
>>>
>>> W = BaseClass()
>>> W.f2(2)
4
>>> X = type('DerivedClass', (BaseClass,), {'f1': (lambda self, x: (x + x))})()
>>> X.f2(2)
6
我想你正在寻找元类编程。
class Base(object):
def test(self):
print 'hit'
a =type( 'Derived',(Base,),{})()
a.test()
hit