从C扩展跟踪CPython对象的生存期 我有一些C++代码,它将事件传递给Python对象。观察员被保留为弱\u ptrs,因此他们不必取消注册 这是用C++来工作的,但是桥接弱指针和Python弱引用是麻烦的(我也希望Python事件处理程序不被订阅活着,就像C++代码一样)。为了有一个活生生的观察者,在对象活着的时候,需要有一个共享指针,因此它归结为在Python土地控制中有一个观察者生命周期的C++观察对象。 迄今为止,我提出的方法涉及大量的样板和中间对象(例如,创建一个类型的另一个pyType对象,它保持一个C++观察员和一个弱引用到Python观察员,并将其设置为Python观察员的一个成员,因此它会随之死亡)。 问题是,有没有明显的方法?< /P> < P>我会在C++模块上写一个Python包装器,并在Python包装器中发送到Python观察器。够了吗

从C扩展跟踪CPython对象的生存期 我有一些C++代码,它将事件传递给Python对象。观察员被保留为弱\u ptrs,因此他们不必取消注册 这是用C++来工作的,但是桥接弱指针和Python弱引用是麻烦的(我也希望Python事件处理程序不被订阅活着,就像C++代码一样)。为了有一个活生生的观察者,在对象活着的时候,需要有一个共享指针,因此它归结为在Python土地控制中有一个观察者生命周期的C++观察对象。 迄今为止,我提出的方法涉及大量的样板和中间对象(例如,创建一个类型的另一个pyType对象,它保持一个C++观察员和一个弱引用到Python观察员,并将其设置为Python观察员的一个成员,因此它会随之死亡)。 问题是,有没有明显的方法?< /P> < P>我会在C++模块上写一个Python包装器,并在Python包装器中发送到Python观察器。够了吗,c++,python,weak-references,C++,Python,Weak References,当您提到某个东西需要有一个共享指针时,如果该共享指针在堆栈上,直到给定的观察者返回为止,这就足够了吗

当您提到某个东西需要有一个共享指针时,如果该共享指针在堆栈上,直到给定的观察者返回为止,这就足够了吗