Мне удалось определить класс A, используйте список экземпляров другого класса B как переменную экземпляра класса A. класс B имеет функцию для изменения переменной экземпляра класса A a1. Класс A также имеет функцию изменения переменной экземпляра класса Bb. Таким образом, класс A может получить доступ к классу B, а класс B может получить доступ к классу A. Эти два класса вложены вместе. Я знаю, что мы сможем упростить изменение всей переменной экземпляра и функции класса B в класс A. Но в моем проекте эта вложенная структура - это то, что реально.Является ли хорошей практикой делать вложенный класс в python?
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)
Что я хочу знать, так это, если такой тип вложенного класса уменьшит эффективность python? Любое лучшее решение?
Возможно, вы захотите прочитать [zen] (https://www.python.org/dev/peps/pep-0020/). –
Вложенные классы Python не похожи на Java, где вложенный класс, где внутренний класс может ссылаться на экземпляры внешнего класса. Они фактически являются двумя отдельными классами. 'A.a1 = pyfunc1()' назначит поле 'a1' на _class_. –