myfunc
является атрибутом MyClass
.Вот как он обнаруживается при запуске:
myinstance = MyClass()
myinstance.myfunc()
Он ищет атрибут на myinstance
с именем myfunc
, не находит его, видит, что myinstance
является экземпляром MyClass
иищет его там.
Итак, полный список атрибутов для MyClass
:
>>> dir(MyClass)
['__doc__', '__module__', 'a', 'b', 'myfunc']
(Обратите внимание, что я использую dir просто как быстрыйи простой способ составить список членов класса: его следует использовать только в ознакомительном режиме, а не в рабочем коде)
Если вам нужны только определенные атрибуты, вам нужно отфильтровать этот список по некоторым критериямпотому что __doc__
, __module__
и myfunc
не являются чем-то особенным, они являются атрибутами точно так же, как a
и b
.
Я имеюникогда не использовал модуль проверки, на который ссылаются Мэтт и Бореалид, но из краткой ссылки видно, что у него есть тесты, которые помогут вам в этом, но вам нужно написать свою собственную функцию предиката, так как кажется, что вы хотите примерноатрибуты, которые не проходят тест isroutine
и не запускаютсяи заканчиваются двумя подчеркиваниями.
Также обратите внимание: при использовании class MyClass():
в Python 2.7 вы используете крайне устаревшие классы старого стиля.Если вы не делаете это специально для совместимости с очень старыми библиотеками, вместо этого вы должны определить свой класс как class MyClass(object):
.В Python 3 нет классов "старого стиля", и это поведение по умолчанию.Однако использование классов newstyle даст вам lot более автоматически определенных атрибутов:
>>> class MyClass(object):
a = "12"
b = "34"
def myfunc(self):
return self.a
>>> dir(MyClass)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'a', 'b', 'myfunc']