基于属性层次结构的代码完成

问题描述 投票:0回答:1

我想创建一个具有以下结构的类:

ClassName
    UpperLevel
        Element_A:
           val_1 = 'example'
        Element_B: Tuple(str, str)
        Element_C: Tuple(str, str)
    LowerLevel
        Element_D: Tuple(str, str)
        Element_E: Tuple(str, str)

这样我就可以输入:

ClassName.UpperLevel.
,IDE 会推荐我
Element_A
Element_B
Element_C

我有以下内容:

class Element:
    def __init__(self, val_1, val_2):
        self.val_1: str = val_1
        self.val_2: str = val_2


class Example:
    def __init__(self):
        self.upper_level.Element_A = Element(r'example1', r'example2')
        self.upper_level.Element_B = Element(r'example1', r'example2')
        self.upper_level.Element_C = Element(r'example1', r'example2')

        self.lower_level.Element_D = Element(r'example1', r'example2')
        self.lower_level.Element_F = Element(r'example1', r'example2')

请注意,整个层次结构已定义,这意味着我事先知道所有“级别”和“元素”,我不需要在现实中动态创建。

为什么这不起作用?
我还需要再上一节课吗

Level

python class code-completion
1个回答
0
投票

要创建具有不同属性的单个

Level
类,您可以使用
SimpleNamespace

from types import SimpleNamespace


class Element:
    def __init__(self, val_1, val_2):
        self.val_1: str = val_1
        self.val_2: str = val_2


class Example:
    def __init__(self):
        upper_level = {'Element_A': Element(r'example1', r'example2'),
                       'Element_B': Element(r'example1', r'example2'),
                       'Element_C': Element(r'example1', r'example2')}
        self.upper_level = SimpleNamespace(**upper_level)

        lower_level = {'Element_D': Element(r'example1', r'example2'),
                       'Element_F': Element(r'example1', r'example2')}
        self.lower_level = SimpleNamespace(**lower_level)


Example().upper_level.Element_A.val_1
© www.soinside.com 2019 - 2024. All rights reserved.