我想创建一个具有以下结构的类:
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
?
要创建具有不同属性的单个
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