编程语言
首页 > 编程语言> > 如何在python中实现CRTP功能?

如何在python中实现CRTP功能?

作者:互联网

我想从python中的基类访问派生类的成员(变量).在c中我可以使用CRTP设计模式.例如,在c中,我会做这样的事情:

#include <iostream>


template <class derived>
class Base {

    public:
        void get_value()
            {
            double value = static_cast<derived *> (this) -> myvalue_;
            std::cout<< "This is the derived value: " << value << std::endl;
        }

};
class derived:public Base<derived>{

    public:

        double myvalue_;

        derived(double &_myvalue)
            {
                myvalue_ = _myvalue;
            }
};

用法:

int main(){

    double some_value=5.0;
    derived myclass(some_value);
    myclass.get_value();
    // This prints on screen "This is the derived value: 5"
};

我可以用任何方式在python中实现这个功能吗?

我想要做的是拥有一个基类,它具有一组基于派生类成员变量的通用函数.我想避免在所有派生类中重写/重复这个通用的函数集.

解决方法:

我不确定它是否是您正在寻找的,但只要子类具有属性,即使它没有在基类中定义,它也能够通过实例访问它.

class Base(object):
    def getValue(self):
        print(self.myvalue)



class Derived(Base):
    def __init__(self, myvalue):
        self.myvalue = myvalue



val = 3
derived = Derived(3)
derived.getValue()
#>3

标签:crtp,python,c
来源: https://codeday.me/bug/20190823/1698110.html