코드에 다음과 같은 클래스 구조가 있습니다.
기본적으로 하위 클래스 B의 개체 목록 인 A는 수퍼 클래스 인 A 클래스입니다. meth는 변수 var를 생성합니다 (파일에서 읽음). 변수 var는 서브 클래스 B의 메소드에 의해 접근 할 수 있어야합니다. 문제는 a = A()를 초기화 한 후에 var는 인스턴스 a의 속성으로 super (). var는 float (1e5 요소 주위)의 큰 배열이므로 B (n 번!) 인스턴스의 속성으로 사용하지 않거나 명시 적으로 methB에 전달하여 메모리 사용을 최소화하려고합니다.하위 클래스 메서드에서 수퍼 클래스 인스턴스의 특성에 액세스하는 방법
class A(object):
def __init__(self,n):
self.data = [B() for _ in xrange(n)]
def __getitem__(self,n):
return self.data[n]
def methA(self):
with open('file.txt','r') as fp:
self.var = fp.readlines()
class B(A):
def __init__(self):
self.derived_var = []
def methB():
'''This method needs to use var defined in meth of A above.'''
a = A(5)
a.methA()
for b in A:
b.methB()
파이썬으로 가능합니까? 아니면 나쁜 코딩입니까?
답변 해 주셔서 감사합니다. 후속 질문 : 함수/메소드에 대량의 배열을 전달하면 실제로 포인터 나 배열 자체를 전달합니다. 즉, 함수를 여러 번 호출하면 내 기억이 질식 될 염려가 있습니까? – astroMonkey
@ user1098683 파이썬의 모든 것은 참조를 통해 전달됩니다. 당신은 그것에 대해 걱정할 필요가 없습니다. – freakish