如何将一个类方法中的项附加到另一个类中的列表中



我想在Class A中向列表添加一个项,但当我在处理后调用该列表时,它只返回一个空列表。如何才能成功附加项目?

这就是我尝试过的。我在getAnswer方法中实现了lst.append,但追加操作没有成功。请注意,我只包含了我的代码片段,因为那里还有其他事情要做。我只是关心如何才能成功地附加到函数中。

class A:
lst = []
class B:
*#I implemented distance formula here*
class C: 
def __init__(self, pt, tolerance):
self.pt = pt
def getAnswer(self, tolerance):
self.tolerance = tolerance
d = B(p1,p2).dist
if d <= self.tolerance:
lst.append(p2)
p_list = [p1, p2]
a = C(p_list, 7)
A.lst

你的问题有很多问题,所以我用子弹指出了它们,然后更新了你的代码片段。

  • 您的C实例称为a,这很令人困惑
  • 您将容差传递给C初始值设定项,但从不使用它
  • lstA的类变量,但您没有使用它,而是在getAnswer函数中创建了一个同名的新变量
  • getAnswer从不被调用
  • CCD_ 11从不";得到";函数名称有点误导(未修改(
  • 您使用两个变量p1,p2启动B,这两个变量不存在于函数的作用域中,但已经存在于pt列表中
class A:
lst = []
class B:
*#I implemented distance formula here*
class C: 
def __init__(self, pt):
self.pt = pt
self.tolerance = None
def getAnswer(self, tolerance):
self.tolerance = tolerance
d = B(self.pt[0],self.pt[1]).dist
if d <= self.tolerance:
A.lst.append(p2)
p_list = [p1, p2]
c = C(p_list)
c.getAnswer(7)
A.lst

虽然以上内容将更新您的列表,但让C更改A的列表仍然很奇怪,我保持原样是因为存在有效的用例,并且变量名称过于模糊,也暗示了其他情况。

它不起作用,因为lst是类/函数中的局部变量。我会做:

class A:
global lst
lst = []
class C:
#init
def getAnswer(self, tolerance):
#stuff
#if
lst.append(p2)

这里有一个测试:

>>> class A:
global lst
lst = []
>>> class C:
def __init__(self):
lst.append("This is appended to the list!")
>>> C()
<__main__.C object at 0x0000021D25CF5640>
>>> """I just called the C __init__ function, let's see if it worked"""
"I just called the C __init__ function, let's see if it worked"
>>> print(lst)
['This is appended to the list!']
>>> """Yay!"""
'Yay!'
>>> 

最新更新