python反射

反射

​ 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力

例如我以前曾使用过:

 if type(test) == list:
        #填写代码

​ 上述过程也就是一个反射的过程

​ 在程序运行的时候,我们若获得一个不知道有何种属性的对象,如果想操作其内部属性,我们可以先通过一个内置函数dir()来获得任意一个类的各种属性以及方法

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

student = Student('sadness',18)
print(dir(student))

那么接下来就是如何操作类的属性了

这就涉及到四个内置函数了hasattr、getattr、setattr、delattr

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

student = Student('sadness',18)

#判断是否有属性
print(hasattr(student,'name'))

# #获得属性
# getattr()
print(getattr(student,'name'))

#
# #设置属性
# setattr()
setattr(student,'name','sadnesspineapple')
print(getattr(student,'name'))

# #删除属性
# delattr()
delattr(student,'name')
print(hasattr(student,'name'))

>>>True
>>>sadness
>>>sadnesspineapple
>>>False

​ 这下我们就可以通过这些基本的方法去实现一些功能

内置函数补充:

isinstance

专门用来判断是不是某一个类型时使用

list_test = []
res = isinstance(list_test, list)
print(res)

issubclass

判断一个类是不是另一个类的子类

class People:
    pass

class Student(People):
    pass

student = Student()

res = issubclass(Student,People)
print(res)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值