class A(object):
class B(object):
def __getitem__(self, key):
# Obviously not the same self here...
x = self.function_A_needs_as_well(key)
def function_A_needs_as_well(self, value):
pass
我希望这个例子不是太糟糕,至少有点自我解释。有人能告诉我如何从“B级”中调用“function_A_needs_as_well”吗?
答案 0 :(得分:6)
Python不是Java。嵌套类没有对其包含类的特殊访问权限。因此,根本没有理由将它们嵌套。
如果B
的实例需要访问A
的实例,则需要在某处传递它。
答案 1 :(得分:1)
我不确定我是否完全理解你的问题,但你不能简单地让B类继承A类然后调用A类函数,在函数调用中传入一个值吗?
class A(object):
def __init__(self, name="Object A"):
self.name = name
def classAfunction(self, value):
print("This value has been passed to me: ", value)
class B(A):
def __init__(self, name="Object B"):
self.name = name
super().__init__(name = "Object A")
ObjectB = B()
ObjectB.classAfunction("Banana")
input()
答案 2 :(得分:0)
没有隐式方法从内部类访问外部类,但是您可以在构造内部类时显式传递外部类的引用。看看下面的代码。我不知道您的设计问题需要查看以下stackoverflow post
class A(object):
class B(object):
def __init__(self, a_instance=None):
self.a_instance = a_instance
def __getitem__(self, key):
# Obviously not the same self here...
if self.a_instance is not None:
x = self.a_instance.function_A_needs_as_well(key)
def test_from_inside_A(self):
b = A.B(self)
b.__getitem__(2)
def function_A_needs_as_well(self, value):
pass
##test from outside A
a = A()
b = A.B(a)
b.__getitem__(2)