需要在 Python 中创建一个类列表。该类用于存储数据,并且必须有自己的方法来操作该类的字段。
class B:
def __init__(self, a:str, b:str):
self.a = a
self.b = b
def foo(self):
pass
class A:
def __init__(self):
self.data_1: str
self.data_2: str
self.listB: list[B]
def foo(self):
pass
a = A()
b = B("ddd", "rrr")
a.listB.append(b)
调用append时发生错误:AttributeError: 'A' object has no attribute 'listB'
我不明白出了什么问题。显然我太沉迷于 C++ 了,这样的操作在那里很有效。我做错了什么,但我不知道它是什么。
更正:
更正后:
class B:
def __init__(self, a:str, b:str):
self.a = a
self.b = b
def foo(self):
pass
class A:
def __init__(self):
self.data_1: str
self.data_2: str
self.listB = []
def foo(self):
pass
a = A()
b = B("ddd", "rrr")
a.listB.append(b)
vala = a.listB[0].a
vala = a.listB[0].a它没有出现在行中和点之后,就好像没有B类字段一样。虽然一切正常
带注释的字段必须在类级别声明,而不是在方法中声明
__init__,然后 IDE 才能看到它们。您__init__需要进行初始化,例如为字段分配初始值listB。示例代码:
可以使用dataclass来重写,那么就不需要手动describe
__init__,包括不用手动给同名的属性传递参数__init__,在声明的时候就可以直接描述默认值了: