码迷,mamicode.com
首页 > 其他好文 > 详细

反射以及内置方法

时间:2018-08-31 19:28:06      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:isp   eating   获取   hide   init   dict   需要   bsp   elf   

反射

反射是使用字符串数据类型的变量名来获取这个变量的值

a = 1

b = 2

name = ‘wang’

使用场景:

  input:用户输入的如果是a,就打印1,如果是b,就打印2,如果是name,就打印‘wang’

  文件:从文件中读出的字符串,转换成变量的名字

  网络:将网络传输的字符串转换成变量的名字

反射类中的变量:静态属性,类方法,静态方法

getatter方法:用来获取属性

  getatter(变量名:命名空间,‘字符串:属于一个命名空间内的变量名‘)

hasatter方法:检测是都含有某属性

  hasatter(变量名,‘字符串‘)

技术分享图片
 1 class Foo:
 2     def __init__(self,name,age):
 3         self.name=name
 4         self.age=age
 5 
 6     def eating(self):
 7         print(%s 在吃饭%self.name)
 8 f1=Foo(wang,18)                 
 9 print(getattr(f1,name))        #wang
10 print(getattr(f1,age))           #18
11 getattr(f1,eating)()              #wang 在吃饭
12 print(hasattr(Foo,name))      #False   
13 print(hasattr(f1,name))        #True
14 
15 #反射实现
16 while True:
17     inp=input(>>>)
18     if hasattr(Foo,inp):            #判断用户输入的内容是否在Foo中
19         print(getattr(Foo,inp))    #如果有则获取并打印
获取和检测

反射模块中的变量

反射文本文件中的变量

技术分享图片
 1 a = 1
 2 b = 2
 3 name = wang
 4 def qwer():
 5     print(qwer)
 6 class Foo:pass
 7 import sys
 8 print(sys.modules[__name__])              #<module ‘__main__‘ from ‘E:/play/ccc.py‘>
 9 print(getattr(sys.modules[__name__],a))       #1
10 print(getattr(sys.modules[__name__],name))  #wang
11 getattr(sys.modules[__name__],qwer)()          #qwer
12 print(getattr(sys.modules[__name__],Foo))      #<class ‘__main__.Foo‘>
13 obj = getattr(sys.modules[__name__],Foo)()
14 print(obj)          # <__main__.Foo object at 0x0000029EA2F40400>                                      
文本

setatter方法:设置属性

  setatter(命名空间,‘变量名‘,‘变量值‘)

技术分享图片
1 class Foo:
2     country=China
3 def func():
4     print(qwer)
5 setattr(Foo,school,北大)
6 print(getattr(Foo,school))       #北大
setatter

delatter方法:删除属性

  delatter(命名空间,‘变量名‘)

技术分享图片
1 class Foo:
2     country=China
3 def func():
4     print(qwer)
5 delattr(Foo,country)
6 print(Foo.__dict__)
delatter

反射类中的变量

反射对象中的变量

反射模块中的变量

反射本文件中的变量

 

内置方法

不需要程序员定义,本身就存在类中的方法就是内置方法,

不需要我们去调用,都有另外一种自动触发它的语法。

内置方法的形式:__方法名__

名字:双下方法、魔术方法、内置方法

__str__

__repr__

 

反射以及内置方法

标签:isp   eating   获取   hide   init   dict   需要   bsp   elf   

原文地址:https://www.cnblogs.com/zhigu/p/9567251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!