我想将一个类作为参数传递给另一个类,然后调用我传递的类的方法,但是我得到了不同的错误。我从this开始,但是我的代码一直给我错误。
考虑以下情况:class A:
A_class_var = "I am an A class variable"
def __init__(self):
self.A_inst_var = "I am an A instance variable"
def GetClassVar(self):
return A_class_var
def GetInstVar(self):
return self.A_inst_var
class B:
def __init__(self, cls):
print cls.GetClassVar()
print cls.GetInstVar()
1)当我调用b = B(A)时,我得到一个“未绑定的方法GetClassVar()必须用一个实例作为第一个参数来调用(没有得到任何结果)。”因此我认为GetClassVar()和GetInstVar()需要一个实例,并试图将cls添加到B的__init__中的两个调用的参数中。同样的错误。
2)当我试图调用b = B(A())时,得到错误“global name A_class_var”未定义。
3)当我尝试调用a = A()然后再调用b = B(a)时,得到的错误与中的相同。
4)当我试图做上面链接的SO答案中的建议时,即将B的定义更改为:class B:
def __init__(self, cls):
self.my_friend = cls
def GetFriendsVariables(self):
print my_friend.GetClassVar()
print my_friend.GetInstVar()
然后调用b = B(A),然后再调用b.GetFriendsVariables()(也就是在这之后我链接),我得到GetFriendsVariables中的错误“global name my_friend is not defined”。
我真的很想了解如何正确地将类作为参数传递,以便能够访问这些类的变量和方法,并且很想了解为什么我上面的各种尝试都不起作用(但是我发送的so链接起作用了?)
非常感谢!