3 ответов:
используйте встроенную функцию
dir().
что вы, вероятно, хотите-это
dir().загвоздка в том, что классы могут переопределить специальный
__dir__метод, который вызываетdir()чтобы вернуть все, что класс хочет (хотя им рекомендуется возвращать точный список, это не применяется). Кроме того, некоторые объекты могут реализовывать динамические атрибуты путем переопределения__getattr__, могут быть прокси-объекты RPC, или могут быть экземпляры классов C-extension. Если ваш объект является одним из этих примеров, они могут не имеют__dict__или быть в состоянии предоставить полный список атрибутов через__dir__: многие из этих объектов могут иметь так много динамических attrs он не будет на самом деле знать что он имеет, пока вы не попытаетесь получить к нему доступ.в краткосрочной перспективе, если
dir()недостаточно, вы можете написать функцию, которая проходит__dict__для объекта__dict__для всех классов вobj.__class__.__mro__, хотя это будет работать только для обычных объектов Python. В долгосрочной перспективе run, возможно, вам придется использовать duck typing + предположения - если это похоже на утку, скрестите пальцы и надейтесь, что у нее есть.feathers.
Я использую
__dict__пример:
class MyObj(object): def __init__(self): self.name = 'Chuck Norris' self.phone = '+6661' obj = MyObj() print(obj.__dict__) # Output: # {'phone': '+6661', 'name': 'Chuck Norris'}
Comments