用户工具

站点工具


python-class:traverse-member

Python中遍历类的成员变量

在Python中经常会遇到新的类,有时候需要遍历一下类的成员变量和函数,用dir只能看到成员的名字,而且也不能区分成员是变量还是函数。

Python类遍历实现代码

下面的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

Google App Engine中request类的遍历

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