Вы ловите все обращения к F1 с помощью __getattr__
. Это позволит вам выполнить дополнительную обработку или вернуть собственную функцию вместо F1
class C1:
def __getattr__(self,name):
if name == 'F1': C2.F2()
return self[name]
Я должен предупредить вас, что это вызовет C2.F2, даже если F1 доступен только (не запущен). Редко, но не невозможно, чтобы к F1 можно было просто получить доступ для другой цели, такой как f = myC1.F1
. Чтобы запустить F2 только при вызове F1, необходимо расширить этот пример, чтобы объединить F2 с возвращенным функциональным объектом. другими словами:
def F1F2():
self.F1()
C2.F2()
return F1F2