这里会显示出您选择的修订版和当前版本之间的差别。
— |
python-class:traverse-member [2011/04/04 15:10] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Python中遍历类的成员变量 ====== | ||
+ | 在Python中经常会遇到新的类,有时候需要遍历一下类的成员变量和函数,用dir只能看到成员的名字,而且也不能区分成员是变量还是函数。 | ||
+ | |||
+ | ====== Python类遍历实现代码 ====== | ||
+ | |||
+ | 下面的Python代码就实现了遍历类成员,并将成员变量打印出来。 | ||
+ | |||
+ | <code python> | ||
+ | types = [type(i) for i in [0, "0", [0], {0:1}, (0,)]] | ||
+ | content = "" | ||
+ | for k in dir(self.request): | ||
+ | content += "%s: %s\n" % (k, type(eval("self.request.%s" % k))) | ||
+ | if type(eval("self.request.%s" % k)) in types: | ||
+ | content += "%s\n" % str(eval("self.request.%s" % k)) | ||
+ | content += "\n" | ||
+ | print content | ||
+ | </code> | ||
+ | ===== Google App Engine中request类的遍历 ===== | ||
+ | |||
+ | <code> | ||
+ | GET: <type 'instance'> | ||
+ | |||
+ | POST: <type 'instance'> | ||
+ | |||
+ | ResponseClass: <type 'type'> | ||
+ | |||
+ | __class__: <type 'type'> | ||
+ | |||
+ | __delattr__: <type 'instancemethod'> | ||
+ | |||
+ | __dict__: <type 'dict'> | ||
+ | {'charset': 'utf-8', 'decode_param_names': True, '_environ': {'wsgi.version': (1, 0), 'webob._parsed_query_vars': (MultiDict([]), ''), 'SERVER_SOFTWARE': 'Development/1.0', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'GET', 'HTTP_KEEP_ALIVE': '115', 'SERVER_PROTOCOL': 'HTTP/1.0', 'QUERY_STRING': '', 'CONTENT_LENGTH': '', 'HTTP_ACCEPT_CHARSET': 'GB2312,utf-8;q=0.7,*;q=0.7', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0', 'HTTP_CONNECTION': 'keep-alive', 'SERVER_NAME': 'localhost', 'REMOTE_ADDR': '127.0.0.1', 'wsgi.url_scheme': 'http', 'SDK_VERSION': '1.4.2', 'PATH_TRANSLATED': 'C:\\Documents and Settings\\dongu\\My Documents\\projects\\website\\gae\\vanclquan\\index.py', 'SERVER_PORT': '8080', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CURRENT_VERSION_ID': '2.1', 'USER_ORGANIZATION': '', 'wsgi.input': <cStringIO.StringI object at 0x045C31E8>, 'HTTP_HOST': 'localhost:8080', 'wsgi.multithread': False, 'APPLICATION_ID': 'vanclquan', 'HTTP_CACHE_CONTROL': 'max-age=0', 'USER_EMAIL': '', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'USER_ID': '', 'GATEWAY_INTERFACE': 'CGI/1.1', 'wsgi.run_once': True, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x00BAF0B0>, 'wsgi.multiprocess': False, 'HTTP_ACCEPT_LANGUAGE': 'zh-cn,zh;q=0.5', 'AUTH_DOMAIN': 'gmail.com', 'TZ': 'UTC', 'PATH_INFO': '/'}, 'unicode_errors': 'ignore'} | ||
+ | |||
+ | __doc__: <type 'str'> | ||
+ | Abstraction for an HTTP request. | ||
+ | |||
+ | Properties: | ||
+ | uri: the complete URI requested by the user | ||
+ | scheme: 'http' or 'https' | ||
+ | host: the host, including the port | ||
+ | path: the path up to the ';' or '?' in the URL | ||
+ | parameters: the part of the URL between the ';' and the '?', if any | ||
+ | query: the part of the URL after the '?' | ||
+ | |||
+ | You can access parsed query and POST values with the get() method; do not | ||
+ | parse the query string yourself. | ||
+ | | ||
+ | |||
+ | __getattr__: <type 'instancemethod'> | ||
+ | |||
+ | __getattribute__: <type 'method-wrapper'> | ||
+ | |||
+ | __hash__: <type 'method-wrapper'> | ||
+ | |||
+ | __init__: <type 'instancemethod'> | ||
+ | |||
+ | __module__: <type 'str'> | ||
+ | google.appengine.ext.webapp | ||
+ | |||
+ | __new__: <type 'builtin_function_or_method'> | ||
+ | |||
+ | __reduce__: <type 'builtin_function_or_method'> | ||
+ | |||
+ | __reduce_ex__: <type 'builtin_function_or_method'> | ||
+ | |||
+ | __repr__: <type 'instancemethod'> | ||
+ | |||
+ | __setattr__: <type 'instancemethod'> | ||
+ | |||
+ | __str__: <type 'instancemethod'> | ||
+ | |||
+ | __weakref__: <type 'NoneType'> | ||
+ | |||
+ | _body__del: <type 'instancemethod'> | ||
+ | |||
+ | _body__get: <type 'instancemethod'> | ||
+ | |||
+ | _body__set: <type 'instancemethod'> | ||
+ | |||
+ | _body_file__del: <type 'instancemethod'> | ||
+ | |||
+ | _body_file__get: <type 'instancemethod'> | ||
+ | |||
+ | _body_file__set: <type 'instancemethod'> | ||
+ | |||
+ | _cache_control__del: <type 'instancemethod'> | ||
+ | |||
+ | _cache_control__get: <type 'instancemethod'> | ||
+ | |||
+ | _cache_control__set: <type 'instancemethod'> | ||
+ | |||
+ | _environ: <type 'dict'> | ||
+ | {'wsgi.version': (1, 0), 'webob._parsed_query_vars': (MultiDict([]), ''), 'SERVER_SOFTWARE': 'Development/1.0', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'GET', 'HTTP_KEEP_ALIVE': '115', 'SERVER_PROTOCOL': 'HTTP/1.0', 'QUERY_STRING': '', 'CONTENT_LENGTH': '', 'HTTP_ACCEPT_CHARSET': 'GB2312,utf-8;q=0.7,*;q=0.7', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0', 'HTTP_CONNECTION': 'keep-alive', 'SERVER_NAME': 'localhost', 'REMOTE_ADDR': '127.0.0.1', 'wsgi.url_scheme': 'http', 'SDK_VERSION': '1.4.2', 'PATH_TRANSLATED': 'C:\\Documents and Settings\\dongu\\My Documents\\projects\\website\\gae\\vanclquan\\index.py', 'SERVER_PORT': '8080', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CURRENT_VERSION_ID': '2.1', 'USER_ORGANIZATION': '', 'wsgi.input': <cStringIO.StringI object at 0x045C31E8>, 'HTTP_HOST': 'localhost:8080', 'wsgi.multithread': False, 'APPLICATION_ID': 'vanclquan', 'HTTP_CACHE_CONTROL': 'max-age=0', 'USER_EMAIL': '', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'USER_ID': '', 'GATEWAY_INTERFACE': 'CGI/1.1', 'wsgi.run_once': True, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x00BAF0B0>, 'wsgi.multiprocess': False, 'HTTP_ACCEPT_LANGUAGE': 'zh-cn,zh;q=0.5', 'AUTH_DOMAIN': 'gmail.com', 'TZ': 'UTC', 'PATH_INFO': '/'} | ||
+ | |||
+ | _environ_getter: <type 'instancemethod'> | ||
+ | |||
+ | _headers: <type 'NoneType'> | ||
+ | |||
+ | _headers__get: <type 'instancemethod'> | ||
+ | |||
+ | _headers__set: <type 'instancemethod'> | ||
+ | |||
+ | _host__del: <type 'instancemethod'> | ||
+ | |||
+ | _host__get: <type 'instancemethod'> | ||
+ | |||
+ | _host__set: <type 'instancemethod'> | ||
+ | |||
+ | _urlargs__del: <type 'instancemethod'> | ||
+ | |||
+ | _urlargs__get: <type 'instancemethod'> | ||
+ | |||
+ | _urlargs__set: <type 'instancemethod'> | ||
+ | |||
+ | _urlvars__del: <type 'instancemethod'> | ||
+ | |||
+ | _urlvars__get: <type 'instancemethod'> | ||
+ | |||
+ | _urlvars__set: <type 'instancemethod'> | ||
+ | |||
+ | accept: <class 'webob.acceptparse.MIMEAccept'> | ||
+ | |||
+ | accept_charset: <class 'webob.acceptparse.Accept'> | ||
+ | |||
+ | accept_encoding: <class 'webob.acceptparse.NoAccept'> | ||
+ | |||
+ | accept_language: <class 'webob.acceptparse.Accept'> | ||
+ | |||
+ | application_url: <type 'str'> | ||
+ | http://localhost:8080 | ||
+ | |||
+ | arguments: <type 'instancemethod'> | ||
+ | |||
+ | blank: <type 'instancemethod'> | ||
+ | |||
+ | body: <type 'str'> | ||
+ | |||
+ | |||
+ | body_file: <type 'cStringIO.StringI'> | ||
+ | |||
+ | cache_control: <class 'webob.cachecontrol.CacheControl'> | ||
+ | |||
+ | call_application: <type 'instancemethod'> | ||
+ | |||
+ | charset: <type 'str'> | ||
+ | utf-8 | ||
+ | |||
+ | content_length: <type 'NoneType'> | ||
+ | |||
+ | content_type: <type 'str'> | ||
+ | application/x-www-form-urlencoded | ||
+ | |||
+ | cookies: <type 'instance'> | ||
+ | |||
+ | copy: <type 'instancemethod'> | ||
+ | |||
+ | copy_get: <type 'instancemethod'> | ||
+ | |||
+ | date: <type 'NoneType'> | ||
+ | |||
+ | decode_param_names: <type 'bool'> | ||
+ | |||
+ | environ: <type 'dict'> | ||
+ | {'wsgi.version': (1, 0), 'webob._parsed_query_vars': (MultiDict([]), ''), 'SERVER_SOFTWARE': 'Development/1.0', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'GET', 'HTTP_KEEP_ALIVE': '115', 'SERVER_PROTOCOL': 'HTTP/1.0', 'QUERY_STRING': '', 'CONTENT_LENGTH': '', 'HTTP_ACCEPT_CHARSET': 'GB2312,utf-8;q=0.7,*;q=0.7', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0', 'HTTP_CONNECTION': 'keep-alive', 'SERVER_NAME': 'localhost', 'REMOTE_ADDR': '127.0.0.1', 'wsgi.url_scheme': 'http', 'SDK_VERSION': '1.4.2', 'PATH_TRANSLATED': 'C:\\Documents and Settings\\dongu\\My Documents\\projects\\website\\gae\\vanclquan\\index.py', 'SERVER_PORT': '8080', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CURRENT_VERSION_ID': '2.1', 'USER_ORGANIZATION': '', 'wsgi.input': <cStringIO.StringI object at 0x045C31E8>, 'HTTP_HOST': 'localhost:8080', 'wsgi.multithread': False, 'APPLICATION_ID': 'vanclquan', 'HTTP_CACHE_CONTROL': 'max-age=0', 'USER_EMAIL': '', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'USER_ID': '', 'GATEWAY_INTERFACE': 'CGI/1.1', 'wsgi.run_once': True, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x00BAF0B0>, 'wsgi.multiprocess': False, 'HTTP_ACCEPT_LANGUAGE': 'zh-cn,zh;q=0.5', 'AUTH_DOMAIN': 'gmail.com', 'webob._cache_control': ('max-age=0', <CacheControl 'max-age=0'>), 'TZ': 'UTC', 'webob._parsed_cookies': ({}, ''), 'PATH_INFO': '/'} | ||
+ | |||
+ | get: <type 'instancemethod'> | ||
+ | |||
+ | get_all: <type 'instancemethod'> | ||
+ | |||
+ | get_range: <type 'instancemethod'> | ||
+ | |||
+ | get_response: <type 'instancemethod'> | ||
+ | |||
+ | headers: <type 'instance'> | ||
+ | |||
+ | host: <type 'str'> | ||
+ | localhost:8080 | ||
+ | |||
+ | host_url: <type 'str'> | ||
+ | http://localhost:8080 | ||
+ | |||
+ | if_match: <class 'webob.etag._AnyETag'> | ||
+ | |||
+ | if_modified_since: <type 'NoneType'> | ||
+ | |||
+ | if_none_match: <class 'webob.etag._NoETag'> | ||
+ | |||
+ | if_range: <class 'webob.etag._NoIfRange'> | ||
+ | |||
+ | if_unmodified_since: <type 'NoneType'> | ||
+ | |||
+ | is_xhr: <type 'bool'> | ||
+ | |||
+ | max_forwards: <type 'NoneType'> | ||
+ | |||
+ | method: <type 'str'> | ||
+ | GET | ||
+ | |||
+ | params: <type 'instance'> | ||
+ | |||
+ | path: <type 'str'> | ||
+ | / | ||
+ | |||
+ | path_info: <type 'str'> | ||
+ | / | ||
+ | |||
+ | path_info_peek: <type 'instancemethod'> | ||
+ | |||
+ | path_info_pop: <type 'instancemethod'> | ||
+ | |||
+ | path_qs: <type 'str'> | ||
+ | / | ||
+ | |||
+ | path_url: <type 'str'> | ||
+ | http://localhost:8080/ | ||
+ | |||
+ | postvars: <type 'instance'> | ||
+ | |||
+ | pragma: <type 'str'> | ||
+ | |||
+ | |||
+ | query: <type 'str'> | ||
+ | |||
+ | |||
+ | query_string: <type 'str'> | ||
+ | |||
+ | |||
+ | queryvars: <type 'instance'> | ||
+ | |||
+ | range: <type 'NoneType'> | ||
+ | |||
+ | referer: <type 'str'> | ||
+ | |||
+ | |||
+ | referrer: <type 'str'> | ||
+ | |||
+ | |||
+ | relative_url: <type 'instancemethod'> | ||
+ | |||
+ | remote_addr: <type 'str'> | ||
+ | 127.0.0.1 | ||
+ | |||
+ | remote_user: <type 'NoneType'> | ||
+ | |||
+ | remove_conditional_headers: <type 'instancemethod'> | ||
+ | |||
+ | request_body_tempfile_limit: <type 'int'> | ||
+ | 0 | ||
+ | |||
+ | scheme: <type 'str'> | ||
+ | http | ||
+ | |||
+ | script_name: <type 'str'> | ||
+ | |||
+ | |||
+ | server_name: <type 'str'> | ||
+ | localhost | ||
+ | |||
+ | server_port: <type 'int'> | ||
+ | 8080 | ||
+ | |||
+ | str_GET: <type 'instance'> | ||
+ | |||
+ | str_POST: <class 'webob.multidict.NoVars'> | ||
+ | |||
+ | str_cookies: <type 'dict'> | ||
+ | {} | ||
+ | |||
+ | str_params: <type 'instance'> | ||
+ | |||
+ | str_postvars: <class 'webob.multidict.NoVars'> | ||
+ | |||
+ | str_queryvars: <type 'instance'> | ||
+ | |||
+ | unicode_errors: <type 'str'> | ||
+ | ignore | ||
+ | |||
+ | uri: <type 'str'> | ||
+ | http://localhost:8080/ | ||
+ | |||
+ | url: <type 'str'> | ||
+ | http://localhost:8080/ | ||
+ | |||
+ | urlargs: <type 'tuple'> | ||
+ | () | ||
+ | |||
+ | urlvars: <type 'dict'> | ||
+ | {} | ||
+ | |||
+ | user_agent: <type 'str'> | ||
+ | Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0 | ||
+ | </code> |