Вы можете сделать самоанализ в Elixir так же, как и в любом другом месте Python - получить все имена атрибутов class Foo
с помощью dir(Foo)
, извлечь атрибут с указанным именем с помощью getattr(Foo, thename)
, проверить тип атрибута с помощью type(theattr)
или isinstance
и т. Д. Строка 'Bar'
, которую вы передаете в качестве атрибута конструктору любого подкласса Relationship
(включая OneToMany
и ManyToMany
), заканчивается как атрибут r.of_kind
полученного результата. экземпляр r подкласса Relationship.
Модуль inspect
в стандартной библиотеке Python может быть более удобным способом сделать самоанализ, но во многих случаях dir / getattr / isinstance & c вполне приемлемы.