简谈python反射
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简谈python反射相关的知识,希望对你有一定的参考价值。
写出一个简单类:
import sys
class webserver(object):
def __init__(self,host,post):
self.host = host
self.post = post
def start(self):
print("server is starting...")
def stop(self):
print("server is stopping...")
def reload(self):
print("server is reloading...")
if __name__ == ‘__main__‘:
server = webserver(‘localhost‘,3033)
print(sys.argv[1])
#当你要调用类方法时:
#最low的方法为用:
if sys.argv[1] == ‘start‘:
server.start()
代码重用太多,可以修改为将方法写成字典:
cmd_dic = {
‘start‘:server.start,
‘stop‘:server.stop,
‘reload‘:server.reload}
if sys.argv[1] in cmd_dic:
cmd_dic[‘start‘]()
代码依然有重用,可以用反射的方法来解决:
if hasattr(server,sys.argv[1]):
func = getattr(server,sys.argv[1]) #获取server.start内存地址
func() #server.start()
反射是很好的写法,常用!
以上是关于简谈python反射的主要内容,如果未能解决你的问题,请参考以下文章