我想调用一个方法来给我所有“非私有”(我在这里使用术语“私有”有点松散,因为它在 Python 中并不真正存在)和非内置属性(即那些不要以单下划线或双下划线开头)。类似 vars(MyClass) 的东西只会返回该类的“公共”属性。
我知道
from M import *
不导入名称以下划线开头的对象。(http://www.python.org/dev/peps/pep-0008/#id25) import 是如何实现的?通过内置函数还是仅通过检查下划线?这样做的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方式来做到这一点。
有关下划线和双下划线的更多信息,请参阅: 对象名称前的单下划线和双下划线是什么意思?