У меня есть полиморфный массив объектов, которые реализуют два (неформальных) интерфейса. Я хочу быть в состоянии различить их с отражением по линии:
if (hasattr(obj, 'some_method')) {
# `some_method` is only implemented by one interface.
# Now I can use the appropriate dispatch semantics.
} else {
# This must be the other interface.
# Use the alternative dispatch semantics.
}
Может быть, что-то вроде этого работает?:
if (*ref(obj)::'some_method') {
# ...
Мне трудно сказать, когда синтаксис попытается вызвать подпрограмму и когда она вернет ссылку на подпрограмму. Я не слишком знаком с таблицами символов пакетов ATM и просто пытаюсь что-то взломать. : -)
Заранее спасибо!