Как стать автором
Обновить

Комментарии 4

Спасибо, конечно, но ответы на большинство вопросов с pyobject выложили еще пару лет назад: dimonvideo.ru/blogs/blog/Virtuos86/955
Точно, спасибо. Я там правда не вижу по классам и метаклассам. Стоит ли попробовать написать? Просто только я нашел статьи 3 на хабре о метаклассах и не думаю, что напишу лучше.
1. Как получить список всех атрибутов объекта

print dir(Foo)



А как же метаклассы? =)

3. Как получить список методов объекта
Поскольку функции и методы в Python являются объектами первого рода (вроде правильно написал?), то для проверки будем использовать функцию getattr, которая возвращает сам аттрибут объекта и функцию callable, которая и осуществляет проверку.

print [arg for arg in dir(Foo) if callable(getattr(Foo, arg))]
# или
print filter(lambda arg: callable(getattr(Foo, arg)), dir(Foo))


Более правильный вариант, учитывая что callable выпилили из 3.х и что вариант из примера вытащит так же все callable-атрибуты, которые не являются методами:

import inspect
print [name for name, item in inspect.getmembers(Foo) if inspect.ismethod(item)]
docs.python.org/library/index.html
Мне кажется, любому python-прораммисту это нужно прочитать, прежде чем вопросы задавать.

P.S. izip лучше в данном случае zip, потому что создает итератор, вместо списка, который вам не нужен.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории