美文网首页
python 反射

python 反射

作者: hehehehe | 来源:发表于2020-09-25 17:24 被阅读0次

反射

dir() 拿到对象所有属性
https://zhuanlan.zhihu.com/p/99150129

1、反射有四个方法:hasattr、getattr、setattr、delattr,比较常用的是前两种,一般会结合起来用。
2、最最重要的一点:通过字符串去操作对象的属性和方法,是字符串形式!
什么对象可以用反射?
3、实例化对象、类、其他模块、本模块
4、只有以上四个才能使用,因为他们都能通过 . 的方式获取或调用,这也算是一种前提
实例化对象的反射操作
class A:

    country = "中国"
    area = "深圳"

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def func(self):
        print(666)

a = A("Jane", 18)
# 对象的属性
print(a.name)                       # Jane

# 注意这个变量名也要用字符串形式!
print(hasattr(a, "name"))           # True

# 不是这样用,而是字符串形式的属性名
print(hasattr(a, "Jane"))           # False

# 一般 hasattr 与 getattr 结合起来使用
if hasattr(a, "name"):
    print(getattr(a, "name"))       # Jane

# 可以设置一个默认值,目的是防止程序报错
# 如果没有该属性,就返回默认值
print(getattr(a, "sex", None))      # None

print(a.country)                    # 中国
print(getattr(a, "country"))        # 中国

ret = getattr(a, "func")
# 注意这里 ret() 相当于 func()
print(ret())                        # 666

# 给对象添加一个属性
setattr(a, "sex", "男")
print(a.sex)                        # 男

# 删除对象的某个属性
delattr(a, "name")
print(a.name)                       # AttributeError: 'A' object has no attribute 'name'
类名的反射操作
class A:

    country = "中国"
    area = "深圳"

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def func(self):
        print(666)

# 获取类 A 的静态属性 country
print(getattr(A, "country"))    # 中国
# 获取类 A 的静态属性 area
print(getattr(A, "area"))       # 深圳

# 获取类A 的动态方法并执行
getattr(A, "func")(23)          # 666

相关文章

  • python反射

    我们可通过反射添加、修改、删除某个对象的属性和方法:hasattr(object,str):判断该对象是否含有该方...

  • Python 反射

    反射:本质是利用字符串的形式去对对象/模块进行操作其成员,一种基于字符串的时间驱动。以我现在的理解,就是本来需要显...

  • Python 反射

    概述 运行时,区别于编译时,指的是程序被加载到内存中执行的时候。反射,reflection,指的是运行时获取类型定...

  • python反射

    概念 运行时: 区别于编译时,指程序被加载到内存中执行的时候. 反射(自省): 指运行时获取对象的类型信息. 具有...

  • Python 反射

    反射: 通过字符串的形式来导入模块,并以字符串的形式执行函数 应用,大部分应用在web框架中。

  • Python 反射

    首先说说反射是什么?反射是可以以字符串的形式动态调用函数的过程。 当然反射不只是字符串的函数执行,她和exec和e...

  • python 反射

    反射 dir() 拿到对象所有属性https://zhuanlan.zhihu.com/p/99150129[ht...

  • python 反射

    python 反射 -解释类型的语言,在程序被加载到内存运行的时候,可以通过某种方p式获取对象的类型、属性等信息的...

  • 面向对象:反射,内置方法

    反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使...

  • __import__ 反射和面向对象基础 self 封装 继承(

    一、反射 python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、del...

网友评论

      本文标题:python 反射

      本文链接:https://www.haomeiwen.com/subject/atifuktx.html