#python #python-3.x
#python #python-3.x
Вопрос:
У меня есть метод объекта класса A, который использует метод другого объекта класса B, аргументом которого является объект класса A.
class A():
def calculate(self):
B = B.calculator(A)
class B():
def calculator(self, A):
...do something with A.attributes
Можно просто передать атрибуты в объект, но я бы рассматривал эту возможность как последний приоритет. Я определенно немного упрощаю свой случай, но мне интересно, есть ли способ передать весь класс
Редактировать: Извините за путаницу. В конце я пытаюсь вызвать объект класса A и A.calculate(), который вызовет объект класса B и функцию калькулятора.
class A():
def __init__(self, value):
self.value = value
def calculate(self):
Bobj = B()
Bobj.calculator(A)
class B():
def calculator(self, A):
...do something with A.value
def main():
Aobj = A(value)
Aobj.calculate()
Комментарии:
1. Почему вы вызываете метод экземпляра другого класса, когда у вас нет экземпляра? Это выглядит очень странно. Либо этот метод не должен быть методом экземпляра, либо вы, возможно, хотите наследовать от
B
? Это неясно без дополнительной информации2. чего вы пытаетесь достичь в итоге? это выглядит как проблема XY .
3. Вместо передачи
A
передатьself
вB.calculator(self)
Ответ №1:
В вашем сценарии в настоящее время не указано, что вы хотите использовать какую-либо информацию из B при вычислении A. Есть несколько способов получить желаемую функциональность.
Сценарий: B не хранит никакой информации и выполняет вычисления. B должна быть функцией
def B(value):
```do something with value```
return
class A():
def __init__(self, value):
self.value = value
def calculate(self):
return B(self.value)
def main():
Aobj = A(value)
Aobj.calculate()
Сценарий: B хранит некоторую другую информацию, но внутренняя информация B не требуется для вычисления. У B должен быть статический метод
class B():
@staticmethod
def calculate(value):
```do something with value```
return
class A():
def __init__(self, value):
self.value = value
def calculate(self):
return B.calculate(self.value)
def main():
Aobj = A(value)
Aobj.calculate()