030反射

2018-06-18 00:51:24来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

###反射
## getattr,hasattr,setattr,delattr,和类里面的字段有关,具体看例子

#1
class  Person:
    def  __init__(self,name,age):
        self.name = name
        self.age = age
    def  show_lover(self):
        print('lover')
    
o = Person('x',21)
b = 'name'
print(o.__dict__[b])

# 2 
b = input('>>>')
if  hasattr(o,b):
    v = getattr(o,b)        # 去什么东西里面获取什么内容   
    delattr(o,b)
    setattr(o,'age',21)
print(v)
func=getattr(o,'show_lover')   # 拿到方法
func()
View Code

# 3 拿到类对象的字段

class  Person:
    stat = '123'
    def  __init__(self,name,age):
        self.name = name
        self.age = age

r = getattr(Person,'stat')
print(r)

# 4拿到其他模块的函数和字段等

# s.py
NAME = '_nbloser'
def  func():
    return'func'
class  Person:
    def  __init__(self):

self.name = '_nbloser'
# 执行.py
import s
r1 = getattr(s,'NAME')
r2 = getattr(s,'func')
Pers = getattr(s,'Person')
p1 = Pers()
print(r1,r2(),p1.name)      # _nbloser   func   _nbloser

 

# 应用小例子

def  f1():
    return'首页'
def  f2():
    return'新闻'
def  f3():
    return'精华'

import  s
inp = input('>>')
if  hasattr(s,inp):
    func = getattr(s,inp)
    print(func())
else:
    print(404)

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python 获得命令行参数的方法

下一篇:单例模式