我有这个示例代码,其中有一个类
B
嵌套在类 A
中:
class A:
class B:
count = 0
def __init__(self,b1=None,b2=None):
self.b1 = b1
self.b2 = b2
def funcb(self,bb):
A.a1 = pyfunc1(bb)
def __init__(self,a1,a2):
self.a1 = a1
self.a2 = a2
self.listb = [A.B()]
def funca(self,aa):
A.B.count += 1
b = A.B(self.a1,self.a2)
listb.append(b)
listb[A.B.count].b1 = listb[A.B.count-1].b1.pyfunc2(aa)
listb[A.B.count].b2 = pyfunc3(aa,self.a2)
listb[A.B.count].funcb(self.a2)
这里,
A
类维护嵌套B类的实例列表。 B
提供了更改A
的另一个实例变量a1
的功能,而A
具有更改B
的实例变量bb
的功能。也就是说,这些类可以互相访问。
这样的嵌套类会降低代码效率吗?我还能如何解决这个问题?
嵌套类不会降低或提高执行效率。它可能会改变维护和理解效率。
嵌套类成为“父类的另一个属性”。您必须将其引用为 A.B
而不是
B
。就是这样,您将查找推迟到不同的命名空间。换句话说,你的 __init__
方法将会失败,因为没有全局名称 B
,只有 A.B
和 self.B
存在(都引用同一个类对象)。嵌套类与其父类之间不存在像 Java 中那样的特殊关系。
大多数 Python 开发人员不会嵌套类,因此当您这样做时,您会打破约定并增加维护成本。