相关疑难解决方法(0)

如何调用超级构造函数?

class A:
    def __init__(self):
        print("world")

class B(A):
    def __init__(self):
       print("hello")

B()  # output: hello
Run Code Online (Sandbox Code Playgroud)

在我使用超级构造函数的所有其他语言中隐式调用.如何在Python中调用它?我希望,super(self)但这不起作用.

python inheritance constructor class superclass

330
推荐指数
6
解决办法
24万
查看次数

如何在python抽象类中创建抽象属性

在下面的代码中,我创建了一个基本抽象类Base.我希望所有继承的类都Base提供name属性,所以我创建了这个属性@abstractmethod.

然后我创建了一个Base名为的子类Base_1,它旨在提供一些功能,但仍然是抽象的.没有name属性Base_1,但是python会在没有错误的情况下实现该类的对象.如何创建抽象属性?

from abc import ABCMeta, abstractmethod
class Base(object):
    __metaclass__ = ABCMeta
    def __init__(self, strDirConfig):
        self.strDirConfig = strDirConfig

    @abstractmethod
    def _doStuff(self, signals):
        pass

    @property    
    @abstractmethod
    def name(self):
        #this property will be supplied by the inheriting classes
        #individually
        pass


class Base_1(Base):
    __metaclass__ = ABCMeta
    # this class does not provide the name property, should raise an error
    def __init__(self, strDirConfig):
        super(Base_1, self).__init__(strDirConfig)

    def _doStuff(self, signals): …
Run Code Online (Sandbox Code Playgroud)

python abstract-class properties decorator

81
推荐指数
6
解决办法
5万
查看次数

Python中的抽象属性

在Python中使用抽象属性实现以下Scala代码的最短/最优雅的方法是什么?

abstract class Controller {

    val path: String

}
Run Code Online (Sandbox Code Playgroud)

Controller强制使用子类来定义Scala编译器的"路径".子类看起来像这样:

class MyController extends Controller {

    override val path = "/home"

}
Run Code Online (Sandbox Code Playgroud)

python oop abstract-class scala

58
推荐指数
10
解决办法
4万
查看次数

Python:抽象类__init__

我试图A用一个默认行为的构造函数声明一个抽象类:所有子类必须初始化一个成员self.n:

from abc import ABCMeta

class A(object):
    __metaclass__ = ABCMeta

    def __init__(self, n):
        self.n = n
Run Code Online (Sandbox Code Playgroud)

但是,我不想让A类被实例化,因为它是一个抽象类.问题是,这实际上是允许的:

a = A(3)
Run Code Online (Sandbox Code Playgroud)

当我期望它应该时,这不会产生任何错误.

那么:如何在为构造函数定义默认行为时定义不可实例化的抽象类?

python oop abstract-class python-2.7

28
推荐指数
3
解决办法
2万
查看次数