python 反射机制和动态导入

本文探讨了Python中的面向对象反射机制,包括其应用场景,如动态方法调用。同时,详细阐述了反射机制如何与动态导入模块相结合,特别是在lib目录下如init、bbs、blog等模块的导入。理解`import`内置函数对于动态加载类和函数的重要性,特别是在处理经常变化的模块时,动态导入的优势得以体现。
摘要由CSDN通过智能技术生成

面向对象的反射机制

反射: 让对象告诉我们相关信息(对象拥有的属性和方法, 对象所属的类等....)
"""

# # 1). 如果知道对象拥有的属性和方法.
# print(dir(str))
# f = open('/tmp/passwd')
# print(dir(f))


# 2). 判断对象所属的类
# print(type('hello'))
class Student(object):
    """
    这是student类的帮助文档


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


    def get_score(self):
        return  "score"

    def get_grade(self):
        return 'grade'


s1 = Student("fentiao", 10)
print(type(s1))
print(isinstance(s1, Student))
print(isinstance('hello', Student))


# 3). 跟据对象可以获取的内容
print(s1.__class__)
print(s1.__dict__)
print(s1.__doc__)


# 4). hasattr, getattr, setattr, delattr
# hasattr: 判断对象是否包含对应的属性或者方法名;
print(hasattr(s1, 'name'))
print(hasattr(s1, '__age'))  # 私有属性, 私有方法, 是不能判断的;
print(hasattr(s1, 'score'))

print(hasattr(s1, 'get_score'))
print(hasattr(s1, 'set_score'))


# getattr: 用于返回对象的属性值或者方法名对应的方法体;
print(getattr(s1, 'name'))
print(getattr(s1, '__age', 'no attr'))
print(getattr(s1, 'get_score', 'no method'))  <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值