嵌套类会带来什么后果?

问题描述 投票:0回答:1

我有这个示例代码,其中有一个类

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
的功能。也就是说,这些类可以互相访问。

这样的嵌套类会降低代码效率吗?我还能如何解决这个问题?

python class oop
1个回答
93
投票

嵌套类不会降低或提高执行效率。它可能会改变维护和理解效率。

嵌套类成为“父类的另一个属性”。您必须将其引用为 A.B 而不是

B
。就是这样,您将查找推迟到不同的命名空间。换句话说,你的
__init__
方法将会失败,因为没有全局名称
B
,只有
A.B
self.B
存在(都引用同一个类对象)。

嵌套类与其父类之间不存在像 Java 中那样的特殊关系。

大多数 Python 开发人员不会嵌套类,因此当您这样做时,您会打破约定并增加维护成本。

© www.soinside.com 2019 - 2024. All rights reserved.