ho una classe che ha più attributi che sono legati, per esempio:In oggetto classe, come aggiornare automaticamente gli attributi?
class SomeClass:
def __init__(self, n=0):
self.list = range(n)
self.listsquare = [ x**2 for x in self.list ]
Se faccio un oggetto normalmente che avrebbe nessun problema, con
a = SomeClass(10)
mi metterò 2 liste, a.list
e a.listsquare
.
Ora, se io voglio fare un oggetto vuoto prima, e assegnare un attributo ad esso, voglio gli altri attributi per essere aggiornati automaticamente, ad esempio se lo faccio
b = SomeClass()
b.list = range(5,10)
voglio b.listsquare
per essere automaticamente aggiornato, e anche il contrario (assegnare b.listsquare
e aggiornamento automatico b.list
). È possibile? Classe la scelta giusta per questo?
Grazie a tutti voi, ma sono completamente sopraffatto da tutte le diverse risposte. Qualcuno può dare una soluzione completa in modo che io possa imparare a scrivere la mia?
vorrei realizzare una classe Foo
con 3 attributi length
, list
e listsquare
tale che:
- Se lo faccio
a = Foo(3)
, ottengoa.length = 3
,a.list = [0, 1, 2]
,a.listsquare = [0, 1, 4]
. - Se faccio
b = Foo().list = [5, 6]
, ottengob.length = 2
,b.listsquare = [25, 36]
. - Se faccio
c = Foo().listsquare = [4, 9]
, ottengoc.length = 2
,c.list = [2, 3]
.
Il codice che hai dato a noi non funziona. le classi sono definite da 'class' non 'def' e sono inizializzate tramite il metodo 'def __init __ (self, ...)'. Hai definito una funzione con 1 parametro richiesto chiamato 'self' e 1 parametro opzionale chiamato 'n'. Quando chiamate SomeClass (10), la funzione prova ad assegnare 'lista' all'oggetto 10 e fallisce. - oh, sembra che la domanda sia stata riformattata ... quindi non importa. – tdelaney
Siamo spiacenti, ho apportato le correzioni. Non ho molta familiarità con questo adesso. – LWZ