我想调用一种方法给我一个所有“非私有”的词典(我在这里使用“私有”一词,因为它在
Python中并不存在)和非内置属性(即那些在类上不要以单个或双下划线开头.像vars(MyClass)这样的东西只能返回该类的“公共”属性.
我知道
from M import *
不会导入名称以下划线开头的对象. (http://www.python.org/dev/peps/pep-0008/#id25)导入如何实现?通过内置函数或仅通过检查下划线?什么是pythonic方法呢?
例:
class MyClass(object): def __init__(self): do_stuff() def _private(self): print 'private' def __gets_name_mangled(self: print 'becomes _MyClass__gets_name_mangled()' def public(self): print 'public'
如果我做
vars(MyClass).keys()
我明白了
['_MyClass__gets_name_mangled','__module__','_private','__doc__','__dict__','__weakref__','public','__init__']
我怎么才能得到
['public']
或者我只是需要自己检查下划线?看起来似乎会有一种pythonic方式来做到这一点.
有关下划线和双下划线的更多信息,请参阅:
What is the meaning of a single- and a double-underscore before an object name?