首页 > 编程语言 >python - 反射

python - 反射

时间:2024-12-02 11:33:58浏览次数:9  
标签:反射 python self value instance print isinstance method

import types

import logger_factory
import typing

# 从 import 的对象中,直接获取属性
logger = getattr(logger_factory, "logger")
print(logger)


# 通过 class 创建对象
class MyClass:

    def __init__(self):
        self.value = None

    def getValue(self):
        return self.value

    def setValue(self, value):
        self.value = value


# 获取对象的 Class
clazz = getattr(MyClass(), '__class__')

# true - true - false
print(isinstance(clazz, typing.Callable))
print(isinstance(clazz, type))
print(isinstance(clazz, types.MethodType))

# 创建类的实例
instance = clazz()

# 获取 setter 函数
method = getattr(instance, "setValue")
method(10)

# true - false - true
print(isinstance(method, typing.Callable))
print(isinstance(method, type))
print(isinstance(method, types.MethodType))

# typing 和 types 中没找到 Class 对应的类型
# type 是所有 object 的元类,所有对象直接或间接继承自 type

# 获取 getter 函数
method = getattr(instance, "getValue")
ret = method()
print(ret)

# 获取 getter 函数
value = getattr(instance, "value")
print(type(value))

# 判断是否包含名称叫 name 的属性
print(hasattr(instance, 'value'))

# 设置属性值
setattr(instance, 'value', 20)

print(method())



标签:反射,python,self,value,instance,print,isinstance,method
From: https://www.cnblogs.com/chenss15060100790/p/18581354

相关文章

  • OpenCV图像处理——图像滤波原理与代码实现(C++/Python)
    概述本节主要总结常见的图像噪声,以及降噪的方法。1.图像噪声图像噪声是指图像中不需要的、随机出现的像素值变化,这些变化可能是由于传感器误差、传输误差、环境干扰等因素引起的。图像噪声会降低图像质量,影响图像处理和分析的结果。1.1高斯噪声高斯噪声,也称为白噪声......
  • 用Python计算预测数据和原始数据对应点误差的平方和的均值
    为了计算预测数据和原始数据对应点误差的平方和的均值(MeanSquaredError,MSE,即均方误差),我们可以使用Python中的基本数学运算或借助`scikit-learn`等库来实现。下面是一个简单的示例,展示如何计算这个指标。###方法1:使用Python基本运算```pythonimportnumpyasnp#原始数据(真......
  • python - 字符串(str)
    例举一下常规用法print('字符串定义')str1='str'str2="str"#声明段落str3='''paragraph'''#使用续行符str4="line1\line2"print('字符串拼接')ret=str1+''+str2print(ret......
  • python - 列表(list)
    创建一个列表时,系统会分配一定的空间,当新增元素个数超出这个空间时,会自动进行扩容。这个结论很容易找到,我们可以写一段代码证明一下,内存占用是阶段变化的。fromsysimportgetsizeofli=[]foriinrange(64):li.append(i)print(f'length:{len(li)},size:{get......
  • python - 字典(dict)
    字典(dict):基于哈希表的一种数据结构,从原理上来说,与其它语言中的map是同一类东西。#创建一个空字典importjsonordered_dict={'a':1}print(ordered_dict)#向字典中添加一些键值对ordered_dict['b']=2ordered_dict['c']=3ordered_dict['d']=4print(ordered......
  • Python_smtp 邮件交互
    SMTP协议简介SMTP(SimpleMailTransferProtocol)是一种用于发送电子邮件的协议。它定义了邮件传输的标准和规则,使得不同邮件服务器之间能够互相通信并传递邮件。发送邮件的基本步骤建立连接:使用smtplib.SMTP_SSL或smtplib.SMTP建立与邮件服务器的安全连接。通常,使用......
  • python - threadlocal
    功能:给线程创建一些变量,线程彼此之间是完全隔离的,每个线程使用各自的线程。使用场景:在处理数据库事务过程中,业务开始时,获取连接,业务结束时,关闭连接,中间的业务是未知的。想封装这样的代码,就可以用threadlocal。importthreading#创建threading.local的实例local=threa......
  • python - 修饰函数
    Python装饰器(Decorator),名字叫装饰器,功能自然对应于设计模式中的装饰者模式(代理模式)。写法上,很像java中的函数注解,实际上,功能也大致一样。简单说:就是在调用函数的时候,可以在在调用之前,加一点逻辑,调用完加一些逻辑,出现异常时加一些逻辑。用途很多:入参的校验,异常处理,返回值......
  • python - 异常
    Exception和Error的区别python与java不一样,python的所有异常类,都继承自BaseException,并不严格区分Error和Exception。以SyntaxError为例,名字虽然叫Error,但实际也是继承自Exception。java的规范:将可预知的,而不影响程序执行的,称之为Exception,比如:参数格式不......
  • python - 基础数据类型
    基础数据类型基础数据类型空值(none)整数(int):表示整数,例如x=2。浮点数(float):表示带有小数点的数值,例如y=1.23。复数(complex):包含实部和虚部的数值,例如z=4+4j。布尔值(bool):表示真(True)或假(False),例如is_true=True。字符串(str):表示文本数据,例如text="Welcome,......