Python3: доступ к переменной dunder - PullRequest
1 голос
/ 29 октября 2019

Я знаю, что такое переменные dunder в Python, и знаю о искажениях имен.

Но по какой-то причине я не могу получить доступ к переменной dunder в следующем фрагменте кода:

    for node in ast.find_all((Call,)):
        # Check if the identifier match the extension name
        if node.node.identifier == 'myapp.ext.MyExtension':
            # I want to access node.__meta
            print("==> type(node) = %s" % type(nod))
            print("==> node.__dict__ = %s" % node.__dict__")

Что печатает:

==> type(node) = <class 'jinja2.nodes.Call'>
==> node.__dict__ = {
        'kwargs': [],
        # ... a bunch of other attributes
        # The __meta attribute below is what I want to access
        '__meta': {'type': 'checkbox', 'value': Const(value='checked'), 'name': Const(value='agree'), 'class': Const(value='bold')}
    }

Поскольку переменная node является экземпляром класса Call, и я хочу получить доступ к его атрибуту __meta, в соответствии с именем пользователя, я быдолжен сделать это так node._Call__meta, но я получаю сообщение об ошибке:

`'Call' object has no attribute '_Call__meta'`

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...