面向对象反射四个方法

# 1,实例化一个对象去研究
# class A:
# country = 'China'
#
# def __init__(self, name, age):
# self.name = name
# self.age = age
#
#
# a1 = A('alex', 1000)
# print(a1.name)
# print(getattr(a1,'name1')) 从对象中得到这个属性对应的值
# print(hasattr(a1,'age')) 判断此对象中,有没有这个属性
# setattr(a1,'sex','男')
# setattr(a1,'name','wusir')
# print(getattr(a1,'name'))
# print(getattr(a1,'sex')) # 对一个对象设置属性
# delattr(a1,'name') # 对一个对象属性删除
# print(getattr(a1,'name'))

# if hasattr(a1,'name1'):
# getattr(a1,'name1')
# else:
# print('没有...')


# 2,类中去研究.
class A:
country = 'China'
job = 'student'

def __init__(self, name, age):
self.name = name
self.age = age
def func(self):
print('in func')
print(getattr(A,'country1',False))
if getattr(A,'country1',False):
# content = input('>>>').strip() # country
# print(A.content) #(A.'country')

# name = '1 + 2'
# name2 = 'name'
# print(eval(name2)) #####eval 不推荐使用


# print(A.country)
# print(A.content)
# print(eval('1+ 2'))

# content = input('>>>').strip() # 'country'
# 你拿到的是一个字符串类型,然后你又想对这个类进行操作
# if hasattr(A,content):
# print(getattr(A,content))

# print(getattr(A,'job1','没有此值'))
# print(getattr(A,'func'))
# getattr(A,'func')(11)

# 3,其他模块去研究.
import oldboy
# print(oldboy.B.name_list)

# bobj = getattr(oldboy,'B')
# print(getattr(bobj,'name_list'))
#
# print(getattr(oldboy.B,'name_list'))

# print(getattr(oldboy.B,'add')(3,4))
# print(getattr(oldboy,'login')('alex','123'))
# def func():
# pass
# print(func())


# 4,本模块(本文件)去研究.
# import sys
# def login():
# print(55)
#
# def func3():
# print(333)
#
# # content = input(">>>")
# # print(content()) # 这样错的
# print(sys.modules[__name__])
# getattr(sys.modules[__name__],'login')()

猜你喜欢

转载自www.cnblogs.com/liuafan/p/9260399.html