Python_反射

''' 
反射 
    hasattr(obj, name):判断一个对象obj里是否包含名为name的属性或方法(hasattr是通过调用getattr(object, str)是否抛出异常来实现的) 
    getattr(obj, name, "default"):如果对象obj中有属性或者方法name,则打印属性str或者打印方法的地址(方法地址加上()即可运行方法),否则打印default 
    setattr(obj, name, value):方法里的参数为obj对象,name字符串,value值。字符串可能会是一个现有的属性或一个新的属性(新属性是全局变量或方法) ,增加的方法必须为全局方法或全局变量
    delattr(obj, name):参数为obj对象和模块中的name属性之一 ,该方法为删除该obj的一个指定的属性(仅删除实例对象中的属性name,并不是删除模块中的)   
'''  
  
def bulk():  
    print("UserPython is yelling...")  
  
  
class People(object):  
    def __init__(self, name):  
        self.name = name  
  
    def talk(self):  
        print("%s is talking..." % self.name)  
  
User = People("UserPython")  
  
# 判断一个对象User里是否是否存在方法或属性  
print(hasattr(User, "name")) #True  
  
# 根据字符串去获取User对象里的对应的属性或方法的内存地址  
print(getattr(User, "name", "default")) #>>>UserPython  
print(getattr(User, "talk", "default")) #>>><bound method People.talk of <__main__.People object at 0x00000000026F1320>>  
print(getattr(User, "talk", "default")()) #>>>UserPython is talking... None (如果有talk,运行talk方法,并打印None,否则打印default)  
  
#给People模块增加一个全局变量age = 19,创建成功返回None  
setattr(User, "age", 19)  
print(User.age) #>>>19  
#给People模块增加一个全局方法 
setattr(User, "BULK", bulk)  
User.BULK() #>>>UserPython is yelling...


#删除实例对象中某个属性或方法,模块中该属性不会被删除
delattr(User, "name") #删除User实例name属性 ===  del User.name
# print(User.name) #>>>AttributeError: 'People' object has no attribute 'name'证明已经删除了属性name

动态导入模块

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,列表是一种有序、可变的数据类型,可以存储多个元素。列表反射是指通过字符串来获取或操作列表中的元素或属性。 要实现列表反射,可以使用以下几种方法: 1. 通过索引获取元素:可以使用列表名加上索引的方式来获取列表中的元素。例如,如果有一个列表`my_list = [1, 2, 3]`,可以通过`my_list`来获取第一个元素。 2. 通过切片获取子列表:可以使用切片操作来获取列表中的一部分元素。例如,如果有一个列表`my_list = [1, 2, 3, 4, 5]`,可以通过`my_list[1:3]`来获取索引为1和2的元素,即返回`[2, 3]`。 3. 使用内置函数获取列表信息:Python提供了一些内置函数来获取列表的信息,如`len()`函数可以获取列表的长度,`max()`和`min()`函数可以获取列表中的最大值和最小值。 4. 使用反射函数`getattr()`:反射函数`getattr()`可以通过字符串来获取对象的属性或方法。对于列表来说,可以使用`getattr()`函数来获取列表的方法或属性。例如,如果有一个列表`my_list = [1, 2, 3]`,可以使用`getattr(my_list, 'append')`来获取列表的`append()`方法。 5. 使用eval()函数:eval()函数可以将字符串作为Python代码进行求值。对于列表来说,可以使用eval()函数来执行字符串中的列表操作。例如,如果有一个字符串`"my_list.append(4)"`,可以使用`eval("my_list.append(4)")`来将元素4添加到列表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值