如何在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