Я новичок в Python OOP и для целей этого вопроса я упростил свою проблему до этого:
class Foo:
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
# some arbitrary change
return self.a + self.b
def subtract(self):
# some arbitrary change
return self.a - self.b
a = Foo(a=1, b=2).add()
b = Foo(a=1, b=3).subtract()
Итак, у меня есть объект, который имеет 2 метода, которые делают разные вещи, чтобы получить какой-то вывод, я создал 2 отдельных экземпляра Foo
, так как значение b
изменилось.
Можно ли мне просто динамически установить b
и obj.method()
, не перечисляя их один за другим? IE: какой-то родовой класс c, который я могу использовать для динамической установки атрибутов и методов, присутствующих в объекте? или есть что-то встроенное, что я могу использовать ...
Редактировать
Вот еще один пример:
class Foo:
def __init__(self, a, b):
self.a = list(a)
self.b = list(b)
def method1(self):.
# some arbitrary change in data
return self.a * 2
def method2(self):
return self.b + [5, 6, 4]
a = Foo(a=[1, 2, 3], b=[]).method1()
b = Foo(b=[1, 2, 3], a=[]).method2()
print(a)
print(b)
Итак, список входных данных меняется в зависимости от метода называется, есть ли для меня способ упаковать это, чтобы я мог передать только один экземпляр некоторые данные, а затем он "знает", что список a
для method1()
, список b
для method2()
- я хочу использовать слово reflection
, но я чувствую, что это может быть неточным.
Опять же, я новичок в OOP, поэтому любые советы приветствуются