Python:反射getattr\setattr\hasattr\delattr

2021/11/14 22:14:22

本文主要是介绍Python:反射getattr\setattr\hasattr\delattr,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

#  问题:什么时候用类方法

# 反射,提供更加灵活的方式去实现去对象中操作成员
# getattr\setattr\hasattr\delattr
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show(self):
        message = '{}_{}'.format(self.name, self.age)


obj = Person('张学友', 28)
v1 = getattr(obj, 'name')  # 获取成员,可以在成员名称后加None,如果不存在则返回None
print(v1)  # 张学友
v2 = setattr(obj, 'area', '香港')  # 设置新成员
print(obj.area)  # 香港
v3 = hasattr(obj, 'area')  # 判断是否存在
print(v3)  # True
delattr(obj, 'age')  # 删除成员
print(obj.age)  # 报错

# import module + 反射,最小导入模块级别
from importlib import import_module

import requests.exceptions

m = import_module('random')  # 等价import random
v1 = m.randint(1, 100)  # 等价于random.randint(1,100)
print(v1)

from requests.exceptions import InvalidURL

m = import_module('requests.exceptions.InvalidURL')  # 会报错
n = import_module('requests.exceptions')  # 正确做法
l = n.InvalidURL


这篇关于Python:反射getattr\setattr\hasattr\delattr的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程