猿问

初始化PyObject而不调用__init__

我有一个包装类,如下面的示例中所示,它是用Python编写的。


class Foo:

    def __init__(self, bar=None):

        if bar:

            self._bar = bar

        else:

            self._bar = CreateBarObject("value") 

我通过Python C API创建了一个实例


// c++ pseudo code for convenience


auto obj = PyObject_CallObject(Foo) 

auto bar = CreateBarObject("another_value");

PyObject_SetAttrString(obj, "_bar", bar)

从代码中可以看到,Foo.__init__当创建新bar对象的实例被创建时将被调用。但是,我想绕过这种“繁重的”操作。那么,有什么安全的方法可以创建Foo实例,以便我可以self._bar通过Python C API进行设置?有任何想法吗?


肥皂起泡泡
浏览 219回答 2
2回答
随时随地看视频慕课网APP

相关分类

Python
我要回答