gpt4 book ai didi

python - 从内部类访问外部类方法

转载 作者:行者123 更新时间:2023-12-01 06:16:22 34 4
gpt4 key购买 nike

我想要一个具有嵌套类的Python类,其中内部类可以访问外部类的成员。我知道正常的嵌套甚至不需要外部类有一个实例。我有一些代码似乎可以生成我想要的结果,并且我想要有关样式和不可预见的复杂性的反馈

代码:

class A():

def __init__(self,x):
self.x = x
self.B = self.classBdef()

def classBdef(self):
parent = self

class B():
def out(self):
print parent.x

return B

输出:

>>> a = A(5)
>>> b = a.B()
>>> b.out()
5
>>> a.x = 7
>>> b.out()
7

所以,A有一个内部类B,它只能从A的实例创建。然后B可以通过父变量访问A的所有成员。

最佳答案

这对我来说看起来不太好。 classBdef 是一个类工厂方法。通常(很少)您会使用它们来创建自定义类,例如具有自定义父类(super class)的类:

def class_factory(superclass):
class CustomClass(superclass):
def custom_method(self):
pass
return CustomClass

但是您的构造没有使用自定义。事实上,它将 A 的内容放入 B 中并将它们紧密耦合。如果 B 需要了解某个 A 变量,则可以使用参数进行方法调用,或者使用对 A 对象的引用来实例化 B 对象。

除非您需要解决特定的原因或问题,否则只需创建一个普通的工厂方法,在 A 中给出 B 对象,而不是像 这样的东西,会更容易、更清晰。 b = a.B().

class B(object):
def __init__(self, a):
self.a = a

def out(self):
print self.a.x

class A(object):
def __init__(self,x):
self.x = x

def create_b(self):
return B(self)

a = A()
b = a.create_b()
b.out()

关于python - 从内部类访问外部类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160809/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com