Python 学习06 - 反射

class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def show(self):
        return '%s-%s'%(self.name,self.age)


foo = Foo('lroyle',18)

# print(type(foo.name))

# b = 'name'
# print(foo.__dict__[b])
#
# if b == 'name':
#     print(foo.name)

b = 'name'
# 以字符串的形式取成员
name = getattr(foo,b)
print(name)

func = getattr(foo,'show')
print(func)
fc = func()
print(fc) # lroyle-18

print(hasattr(foo,'name')) # True

setattr(foo,'k1','v1')
print(foo.k1) # v1

delattr(foo,'name')
# print(foo.name)

 

 

反射在模块级别的使用

v005.py

NAME = 'lroyle'

def func():
    return 'func'


class Foo:
    def __init__(self):
        self.name = 123

aaa.py

import v005

# r1 = v005.NAME;
# print(r1) # lroyle
# r2 = v005.func()
# print(r2) # func

r1 = getattr(v005,'NAME')
print(r1)

r2 = getattr(v005,'func')
result = r2()
print(result)

cls = getattr(v005,'Foo')
print(cls) # <class 'v005.Foo'>
foo = cls()
print(foo) # <v005.Foo object at 0x10c9da9b0>
print(foo.name) # 123

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值