Как определить соответствующий класс метода экземпляра? - PullRequest
1 голос
/ 10 мая 2019
Например,

, у меня есть этот код (новый класс стилей):

class B:
    def func(self):
        # do something to instance of type B
        pass

class A:
   def __init__(self, random_variable):
       if random_variable > 0:
           self.func = B().func
       else:
           pass

   def func(self):
       # do something to instance of type A
       pass

a = A(random_variable)

Как определить, будет ли func атрибут экземпляра a изначально привязываться к B или A, без проверкизначение случайной величины?

1 Ответ

1 голос
/ 10 мая 2019

Обратитесь к атрибуту __self__ метода, в котором хранится экземпляр, с которым он связан, а затем используйте isinstance:

baby = A(np.random.rand() - 0.5).func
if isinstance(baby.__self__, A):
    print("It's an A! Congratulations!")

elif isinstance(baby.__self__, B):
    print("It's a B...")

else:
    print("What...is this...?")

Я бы отметил, строго говоря, что func это всегда , изначально привязанный к A.func, так как вы изменяете его в __init__.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...