为了账号安全,请及时绑定邮箱和手机立即绑定

从 C++ 到 Python 的转换——如何在 Python 中声明一个没有定义的虚方法

从 C++ 到 Python 的转换——如何在 Python 中声明一个没有定义的虚方法

临摹微笑 2021-11-02 16:48:29
我正在尝试将 C++ 库转换为 python。c++文件class A{  public:    virtual void example(paramtype, paramtype) = 0;    void myMethod(void);}void A::myMethod(void){    example();}class B: public A{  public:    void example(paramtype p1, paramtype p2); // implemented}我很难实现myMethod。我想创建一个变量来保存示例方法并像下面这样在myMethod 中调用该变量。蟒蛇文件class A:    def __init__(self):        self.example = None    def myMethod(self):        self.example()但是后来编辑说不能调用 None 类型(当然)。我怎样才能做到这一点?
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

C++ 中的基类声明了一个没有定义的虚方法。


virtual void example(paramtype, paramtype) = 0;

这意味着它必须在要使用的子类中定义。在你的图书馆里,那是 class B。


在 Python 中,您可以使用


raise NotImplementedError()

表示方法尚未实现。有关更多详细信息,请参阅此答案。


class A:

    def example(self):

        raise NotImplementedError()


    def myMethod(self):

        self.example()


class B(A):

    # override the example method by providing the implementation

    def example(self):

        # implementation

在这个例子中,调用example一个类型的对象A会抛出一个错误,因为这个方法没有定义。您只能在类型为 的对象上调用该方法B。


查看完整回答
反对 回复 2021-11-02
  • 2 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信