# hasatter 检测是否含有某属性
# getattar 获取属性
# setattr 设置属性
# delattr 删除属性
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
def say_hi(self):
print("hi,guys , my name is " ,self.name)
obj=Person('Alex',26)
# 检测是否含有某属性
print(hasattr(obj,"name"))
print(hasattr(obj,"say_hi"))
# 获取属性
print(getattr(obj,"name"))
function = getattr(obj,"say_hi")
function()
# 设置属性
setattr(obj,'hobby','girl')
setattr(obj,"show_name",lambda self:self.name+'--%s'%self.age)
print(obj.__dict__)
print(obj.show_name(obj))
# 删除属性
delattr(obj,'age')
delattr(obj,'show_name')
print(obj.__dict__)
# 反射模块成员
import sys
def s1():
print('s1')
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
name = "test"
this_module = sys.modules[__name__] # __name__ 会动态的代表当前模块名
print(this_module)
print(__name__)
print(hasattr(this_module, 's1'))
print(hasattr(this_module, 'name'))
print(getattr(this_module, 'Person'))
p = getattr(this_module, 'Person')
t =p("Alex",22)
print(t.name)
# 反射的 实例运用 网站点击
# 未用反射
class User:
def login(self):
print('欢迎来到登录页面')
def register(self):
print('欢迎来到注册页面')
def save(self):
print('欢迎来到存储页面')
while 1:
choose = input('>>>').strip()
if choose == 'login':
obj = User()
obj.login()
elif choose == 'register':
obj = User()
obj.register()
elif choose == 'save':
obj = User()
obj.save()
# 使用反射后
class User:
def login(self):
print('欢迎来到登录页面')
def register(self):
print('欢迎来到注册页面')
def save(self):
print('欢迎来到存储页面')
user = User()
while 1:
choose = input('>>>').strip()
if hasattr(user,choose):
func = getattr(user,choose)
func()
else:
print('输入错误。。。。')
反射 # hasatter 检测是否含有某属性 # getattar 获取属性 # setattr 设置属性 # delattr 删除属性
最新推荐文章于 2023-07-11 00:48:50 发布