# 问题:什么时候用类方法
# 反射,提供更加灵活的方式去实现去对象中操作成员
# 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