如何在python中一次定义和实例化派生类?

时间:2016-09-01 19:50:04

标签: python inheritance

我有一个我想要派生和实例化的基类。我可以在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中所做的事情吗?

2 个答案:

答案 0 :(得分:2)

一般来说,你不会看到这种代码,因为很难阅读和理解。我真的建议你找一些替代方案,避免接下来会发生什么。话虽如此,您可以在一行中创建一个类和一个实例,如下所示:

>>> 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

答案 1 :(得分:0)

我认为你正在寻找元类编程。

class Base(object):
   def test(self):
      print 'hit'
a =type( 'Derived',(Base,),{})()
a.test()
hit