这是我的代码:
class Regex:
def __init__(self: 'Regex',
value: object =None, child: list =None, child2: list = None):
"""node with value and any nummber of children"""
list_of_regex = [0,1,2,'e','|','.','*']
self.value = value
if self.value not in list_of_regex:
raise Exception
if not child:
self.child = []
if not child2:
self.child2 = []
else:
self.child = child[:]
self.child = child2[:]
def __repr__(self: 'Regex') -> str:
return ('Regex(' + repr(self.value) + ', ' +
repr(self.child) + ', ' + repr(self.child2) + ')')
当我在我的python shell中输入以下内容时:
>>>Regex(1,[1])
输出是:
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 1, in <module>
# Used internally for debug sandbox under external interpreter
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 19, in __repr__
builtins.AttributeError: 'Regex' object has no attribute 'child'
我不确定为什么它告诉我我的班级没有属性'child'。看看当我尝试这两个不同的电话时会发生什么。
>>>c = Regex(1)
>>>c.child
[]
>>>c = Regex(1,[1])
>>>c.child
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
builtins.AttributeError: 'Regex' object has no attribute 'child'
代码出了什么问题?
答案 0 :(得分:3)
if not child:
self.child = []
if not child2:
self.child2 = []
else:
self.child = child[:]
self.child = child2[:]
此处的else
块与第二个if
相关联。它与第一个if
没有关联。这意味着如果指定了child
且child2
未被指定,则第二个if
块是唯一触发的块,并且child
未设置。
此外,
self.child = child2[:]
你可能想在这里设置child2
属性。