python面向对象反射
2023-12-21 22:51:49
就是通过字符串的形式操作对象相关属性
反射基本语法?
from django.test import TestCase
# Create your tests here.
class Students:
def __init__(self, name, gender):
self.name = name
self.gender = gender
def play(self, game, novel):
print(game, novel)
s = Students('lyz', 'male')
print(hasattr(s, 'name')) # True
print(hasattr(s, 'play')) # True
print(getattr(s, 'name')) # lyz
g = getattr(s, 'play')
g('lol', '斗破')
再写一个简单的网页登录示例
class WebSite:
def register(self):
print('这是注册页面')
def login(self):
print('这是登录页面')
def about(self):
print('关于...')
while True:
choose=input('请输入要进入的页面:')
if choose=='register':
page=WebSite()
page.register()
elif choose=='login':
page=WebSite()
page.login()
else:
page=WebSite()
page.about()
你会发现如果类中写上百种方法,那么if也要写上百种,这种代码很明显不行,这时候就可以使用反射。
page = WebSite()
while True:
choose = input('请输入要进入的页面:')
# 判断类实例化对象中是否有这个方法
if hasattr(page, choose):
# 通过字符串调用类的方法
g = getattr(page, choose)
g()
else:
print('404')
文章来源:https://blog.csdn.net/flclyz/article/details/135141066
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!