У меня есть класс, который имеет несколько атрибутов, которые связаны, например:В объекте класса, как автоматически обновлять атрибуты?
class SomeClass:
def __init__(self, n=0):
self.list = range(n)
self.listsquare = [ x**2 for x in self.list ]
Если я сделать объект нормально, что бы никаких проблем, с
a = SomeClass(10)
я получить 2 списков, a.list
и a.listsquare
.
Теперь, если я хочу, чтобы сделать пустой объект первым, и присвоить один атрибут к нему, я хочу, чтобы другие атрибуты, которые будут автоматически обновляться, например, если я
b = SomeClass()
b.list = range(5,10)
Я хочу b.listsquare
быть автоматически обновляется, а также наоборот (назначьте b.listsquare
и автообновление b.list
). Это возможно? Есть Класс правильный выбор для этого?
Спасибо вам всем, но я полностью перегружен всеми различными ответами. Может ли кто-нибудь дать полное решение, чтобы я мог учиться писать самостоятельно?
Я хотел бы достичь класса Foo
с 3-мя атрибутами length
, list
и listsquare
, что:
- Если я
a = Foo(3)
, я получаюa.length = 3
,a.list = [0, 1, 2]
,a.listsquare = [0, 1, 4]
. - Если у меня
b = Foo().list = [5, 6]
, я получаюb.length = 2
,b.listsquare = [25, 36]
. - Если у меня
c = Foo().listsquare = [4, 9]
, я получаюc.length = 2
,c.list = [2, 3]
.
Код, который вы предоставили нам не работает. классы определяются «классом» не «def» и инициализируются методом «def __init __ (self, ...)». Вы определили функцию с 1 обязательным параметром, называемым «self», и 1 необязательный параметр, называемый «n». Когда вы вызываете SomeClass (10), функция пытается назначить «список» объекту 10 и терпит неудачу. - О, похоже, вопрос переформатирован ... так что неважно. – tdelaney
Извините, я внесла поправки. Я не очень хорошо знаком с этим сейчас. – LWZ