无法在类初始化中设置断点

2024-10-01 02:19:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用一个定制的YAML标签来定义配置中的秘密。配置密钥的路径决定密钥存储中密钥的路径。你知道吗

import yaml
import pdb

yaml_str="""
databases:
  master:
    user: 'admin'
    pass: !KMS
"""


class KMSSecret(yaml.YAMLObject):

    def __repr__(self):
        pdb.set_trace()

        secret_path = '/' + '/'.join(self._find_key(config))
        return secret_path

    def _find_key(self, data):
        pdb.set_trace()

        for key, value in data.items():
            if isinstance(value, dict) or isinstance(value, list):
                path_item = self._find_key(value)
                if path_item:
                    return [key] + path_item
            elif value is self:
                return [key]

    @classmethod
    def from_yaml(self, loader, node):
        return KMSSecret()


yaml.add_constructor(u'!KMS', KMSSecret.from_yaml)
config = yaml.load(yaml_str)

__repr___find_key中设置断点无效。你知道吗

由于加载后检查config变量会显示预期的表示,因此必须在某个点执行代码。你知道吗

在上述代码段末尾添加print(config)时,断点起作用。你知道吗

我想更多地了解正在发生的事情以及我应该读什么。你知道吗


Tags: pathkeyimportself路径configyamlreturn