Wie kann eine "kindliche" Klasseninstanzmethode Auslöser haben, wenn ein "übergeordnetes" Instanzattribut aktualisiert wPython

Python-Programme
Anonymous
 Wie kann eine "kindliche" Klasseninstanzmethode Auslöser haben, wenn ein "übergeordnetes" Instanzattribut aktualisiert w

Post by Anonymous »

Ich versuche, das Verhalten zu erhalten, bei dem kindliche Klasseninstanzmethode als Reaktion auf ein Instanzattribut eines übergeordneten übergeordneten aktualisiert wird. Die Kinderklasse kann vom Elternteil erben, wenn dies der einzige Weg ist, dies zu tun. Ich bin mir der Beobachter/Callbacks bewusst und löste dann die Rückruffunktionen nach dem Update aus, aber ich möchte, dass die Normalisierung mit anderen Worten explizit codiert wird. />
Die Instanzattribute im folgenden Code können keine Klassenattribute sein < /li>
Kann nicht explizit normalisiert aufrufen. Verschiedene Klassen, die an das Instanzattribut begrenzt sind, raw.x und sie werden diese Beziehung immer haben.

Code: Select all

import numpy as np
import time

class Raw:
def __init__(self, x):
self._x = x

@property
def x(self):
return self._x

@x.setter
def x(self, new_value):
self._x = new_value

def update_values(self, counter):
self.x = self.x + counter + np.random.normal(0,0.3)

class Normalised:
def __init__(self, raw_obj: Raw, name=""):
self.raw = raw_obj
self.name = name
self.norm=self.normalise()

@property
def normalise(self):
x = self.raw.x
self.norm = (x - x.min()) / (x.max() - x.min())
print(self.norm)
return self.norm

data_1 = Raw(np.arange(10))
data_2 = Raw(20 * np.arange(10))

data_normalised_1 = Normalised(data_1, "object_1")
data_normalised_2 = Normalised(data_2, "object_2")

while True:
data_1.update_values(1)
data_2.update_values(2)
time.sleep(2)
< /code>
Ich möchte nicht so etwas wie: < /p>
 verwendenclass Raw:
def __init__(self, x,):
self._x = x
self.callbacks=[]

def add_callback(self,callback):
self.callbacks.append(callback)

def update_values(self, counter):
self.x = self.x + counter + np.random.normal(0,0.3)

for callback in self.callbacks:
callback(self.x)

class Normalised:
def __init__(self, raw_obj: Raw, name=""):
self.raw = raw_obj
self.name = name
self.norm=self.normalise()
raw_obj.add_callback(self.normalise)

def normalise(self, x):
self.norm = (x - x.min()) / (x.max() - x.min())
return self.norm
< /code>
Und auch nicht mag: < /p>
class Raw:
def __init__(self, x, normal_obj):
self._x = x
self.normal_obj=normal_obj
# rest of code

def update_values(self, counter):
self.x = self.x + counter + np.random.normal(0,0.3)
self.normal_obj.normalise()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post