Можем ли мы передать объект класса внутри его собственного метода?

#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()