用户工具

站点工具


python-class:traverse-member

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

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>​
python-class/traverse-member.txt · 最后更改: 2011/04/04 15:10 (外部编辑)