首页 > 编程语言 > 详细

Python--反射

时间:2020-08-05 00:13:06      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:定义   delattr   对象   asa   sat   ddd   

反射是一个很重要的概念,它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。它有四个重要的方法:

1、getattr 获取指定字符串名称的对象属性

2、setattr 为对象设置一个对象

3、hasattr 判断对象是否有对应的对象(字符串)

4、delattr 删除指定属性

 1 # -*- coding:utf-8 -*-
 2 def talk(self): # 定义一个函数
 3     print("%s is talking..." % self.name)
 4 class Dog(object): # 定义一个类
 5     def __init__(self,name): 
 6         self.name = name
 7 
 8     def eat(self): #定义一个eat的函数
 9         print("%s is eating..." % self.name)
10         
11 d = Dog("ssddda") # 实例化
12 choice = input("请随意输入>>>:") # 用户输入
13 print(hasattr(d, choice)) #判断一个对象obj里是否有对应的name_str字符串的方法
14 print(getattr(d,choice)) #根据字符串去获取obj对象里的对应的方法的内存地址
15 func = getattr(d,choice)
16 func()
17 if hasattr(d,choice):
18     ‘‘‘choice为函数时‘‘‘
19     func = getattr(d,choice)
20     ‘‘‘choice为变量时‘‘‘
21     # attr = getattr(d,choice)
22     # print(attr)
23     ‘‘‘删除属性或方法‘‘‘
24     delattr(d,choice)
25     x = getattr(d,choice)
26     print(d)
27 else:
28     setattr(d,choice,talk) # setattr(x,‘y‘,z) 等价于 设置 x.y = z
29     func = getattr(d,choice)
30     func(d)
31     # setattr(d,choice,20)
32     # attr = getattr(d,choice)
33     # print(attr)

 

Python--反射

标签:定义   delattr   对象   asa   sat   ddd   

原文:https://www.cnblogs.com/sunnytomorrow/p/13435921.html

(0)
(0)
   
举报
评论 一句话评论(0
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号