首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python - 面向对象编程 - 反射 hasattr、getattr、getattr、delattr

    什么是反射 反射的概念是由 Smith 在 1982 年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省) Python 面向对象中的反射 通过字符串的形式操作对象的属性 Python...中一切皆为对象,所以只要是对象都可以使用反射 比如:实例对象、类对象、本模块、其他模块,因为他们都能通过 的方式获取、调用 对象.属性 反射中关键的四个函数 hasattr getattr setattr...这是通过调用 并捕获AttributeError来完成的 getattr(obj,name) getattr def getattr(object, name, default=None):...""" getattr(object, name[, default]) -> value Get a named attribute from an object; getattr...# getattr print(getattr(blog, "name")) # 实例对象-实例属性 print(getattr(blog, "sum")) # 实例对象-类属性 print(getattr

    57030

    Day11面向对象高级编程23

    只需要定义好__str__()方法,返回一个好看的字符串就可以了: >> class Student(object): ......__ getattr__ Python的一个机制,写一个getattr()方法,动态返回一个属性。...调用Chain类的构造函数,返回一个Chain类的对象,假设命名为ch,path=''; 第二次,对ch变量调用他的a属性,因为不存在,调用__getattr__函数,返回一个Chain对象,这个时候里面的...初始默认为"" ,Chain().a 时,类中并没有 a 属性,Python解析器调用 getattr函数 --> __getattr__(self,path='a'), 并返回一个Chain实例,然后把...,所以返回的是Chain(), 这个就会调用call函数了,然后把“Michael”作为path传入,然后call函数就返回了/a/b/user/Michael,剩下的类同。

    72670

    Python 魔法方法之__getattr__(self,name)

    前言 当实例对象调用一个不存在的属性时,系统通常会报错,那有啥办法避免这种现象么,或者说自定义报错信息,答案是肯定的,我们可以通过定义__getattr__(self,name)魔法方法来实现。...__getattr__(self, name) __getattr__(self,name) 定义当用户获取一个不存在的属性时的行为。...__(self,name)方法,一旦属性查找失败,就会调用__getattr__(self,name)方法: >>> class Animal(): ......def __getattr__(self,name): ......这边也来说下调用__getattr__的详细过程: 1.在对象的实例属性中寻找,找不到执行下一步2.在的类中查找类属性,找不到执行下一步3.在对象的继承链上寻找,找不到执行下一步4.调用__getattr

    1.8K20
    领券