У меня есть два класса, базовый класс и контейнерный класс. Мне нужен базовый класс для доступа к параметрам, которые хранятся в классе контейнера. Вместо того, чтобы передавать все параметры thous экземпляром базового класса, я решил обратиться непосредственно к контейнеру:
import numpy as np
class Baseclass:
def __init__(self,value, ref_container):
self.val = value
self.ref_container = ref_container
def raise_to_power(self):
return self.val**self.ref_container.power
class Containerclass:
def __init__(self,values, power):
self.values = [Baseclass(val,self) for val in values]
self.power = power
def sum_of_powers(self):
return np.sum([val.raise_to_power() for val in self.values])
plop = Containerclass(np.array([1,2,3,4]),2)
Это плохая практика? Как я могу достичь той же цели с помощью нескольких способов Pythoni c? Обратите внимание, что это имеет странный побочный эффект:
plop.values[1].ref_container.values[1].ref_container.values[1].ref_container == plop # True