我设法定义一个类A,使用另一个类B的实例列表作为类A的实例变量.B类有一个函数来改变A类的另一个实例变量a1.A类还具有改变B类实例变量bb的功能.所以A类可以访问B类,B类可以访问A类.这两个类是嵌套在一起的.我知道我们可以更容易地将所有实例变量和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)
Run Code Online (Sandbox Code Playgroud)
我想知道的是,如果这种嵌套类会降低python的效率吗?更好的解决方案?
Mar*_*ers 13
嵌套类不会降低也不会提高执行效率.它可能会改变维护和理解效率.
嵌套类只是父类的另一个属性.你必须引用它A.B而不是B.就是这样,您将查找推迟到不同的命名空间.换句话说,您的__init__方法将失败,因为没有全局名称B,只有A.B并self.B存在(两者都引用相同的类对象).
在嵌套类和它们的父类之间没有特殊关系,就像在Java中一样.
大多数Python开发人员不会嵌套类,因此当您这样做时,您会破坏约定并增加维护成本.
| 归档时间: |
|
| 查看次数: |
6165 次 |
| 最近记录: |