get_membervalues
не определено внутри myclass
, поэтому a
не будет иметь к нему доступа.
Он определен внутри myproperty
, поэтому следующий логический вывод - попытаться добраться до объекта myproperty
, связанного с a.data
. Поскольку Python хранит функции в myclass
в myclass.__dict__
, мы можем найти объект свойства следующим образом:
a.__class__.__dict__['data']
И затем вызвать функцию оттуда:
a.__class__.__dict__['data'].get_membervalues()
>>> {'name': 'data', 'cls_name': 'AnotherClass', 'tooltip': 'help'}
Извините, но нет.
проблема состоит в том, что shared_ptr<foo>
и shared_ptr<bar1>
различные типы. Я не понимаю все, на что это идет под капотом, но я думаю , что, когда конструктор возвращается и присвоен shared_ptr<foo>
, внутреннее weak_ptr<bar1>
видит, что ничто не указывает на него (потому что только shared_ptr<bar1>
увеличил бы счетчик), и сбрасывает себя. Когда Вы звоните bar1::shared_from_this
в get_callback
, Вы получаете исключение, потому что внутреннее weak_ptr
ни на что не указывает.
По существу, enable_shared_from_this
только, кажется, работает прозрачно от единого класса в иерархии. Если Вы пробуете реализация его вручную , проблема должна стать очевидной.