类的内置函数(继承object的,自己重写)今日临时总结的内容,可能还有些不正确的地方,初步当做个速查表吧。
内置函数 | 执行时机 | 注意点 | 调用案例 |
---|---|---|---|
__init__ | 实例化对象时 | 不允许写返回值(return None和不返回没区别) 子类重写了 __init__() 方法要在子类中的__init__() 方法调用父类的__init__ 方法(super(当前类,self).__init__(参数) ) | stu = Student() |
__new__ | 类实例化被调用时 | stu = Studetn() | |
__call__ | 调用对象时 | 要记得调用父类的 | stu(__call__方法的参数) |
__str__ | 对象转为字符串时 | 必须return 字符串类型的返回值(默认返回值时类型+地址,没啥意义) | print(stu) |
__del__ | 对象删除时(手动或程序结束、垃圾回收机制) | del stu | |
__getattr__ ( . 方法原理) | 用 .访问属性时 | 该属性不存在才执行,有__getattribute__ 方法会先执行__getattribute__ 方法 | stu.gaewfg |
__setattr__ ( . 方法原理) | 用 .新增/修改属性时执行 | stu.sex = ‘male‘ | |
__delattr__ ( . 方法原理) | 用del 对象.属性 删除属性时,执行 | 属性 被删除时才执行 | del stu.age |
__getattribute__ | 用 .访问属性时 | 不管该属性有没有都会执行,写了这个方法后__getattr__需要自行调用 | stu.age |
__getitem__ ( [] 原理) | 用 [属性名] 访问属性时 | stu[age] | |
__setitem__ ( [] 原理) | 用 [属性名] = 修改或新增属性时 | stu[age] = 18 | |
__delitem__ ( [] 原理) | 用 [属性名] 删除属性时 | del stu[age] | |
__gt__ __ge__ __eq__ __ne__ __lt__ __le__ 比较运算符(自定义比较规则) | 调用对应的比较符时 | 像__gt__ 和 __lt__ 这样的只需要指定一个即可 | stu1 > stu2 |
__iter__ _next__ 迭代器协议 | 当成迭代取值对象时 | for i in stu: ... | |
__enter__ __exit__ 上下文管理 | 跟在 with 后面时 | with MyOpen(__enter__ 的参数) as m: |
属性 | 作用 | 注意点 | 案例 |
---|---|---|---|
__dict__ | 返回调用者自身的名称空间 | stu.__dict__ | |
__class__ | 返回当前调用对象的类 | ||
__slots__ | 指定该类对象能所能拥有的全部属性,减少内存开销 | 会将类对象的属性给限制死,视情况使用,连__dict__ 都会被省掉 | __slots__ = [‘name‘] # 加了以后再添加属性就不行了,限制属性 |
类.mro() | 获取到类的mro 列表,即类的查找顺序 | python3中才有这个方法 | |
类.__name__ | 返回类的类名 | class_name = stu.__class__ |
函数 | 作用 | 注意点 | 案例 |
---|---|---|---|
hasattr() | 判断某个对象是否存在某个属性 | 返回值是True / False | hasattr(p,‘age‘) |
getattr() | 从对象中取出值 | 第三个位置默认值,不存在时返回默认值 | getattr(p,‘age‘,None) |
setattr() | 为对象添加、修改属性 | setattr(p,‘name‘,‘jackson‘) | |
delattr() | 删除对象属性 | delattr(p,‘school‘) | |
locals() | 获取当前名称空间内的所有名字 | 直接修改无效 | 类的初始化函数初始化属性(__init__ ) |
isinstance() | 判断一个对象是不是某个类/某几个类的实例 | 第二参数可以传元组,返回值为 True/ False | isinstance(obj1,(int,Student)) obj1是int 类型或者 Student 类型? |
issubclass() | 判断一个类是不是另一个类的子类 | issubclass(type(obj),Animal) 对象obj 的类 是不是Animal的子类 |
总结越来越感觉时间不够用了,要加油呀!
一寸光阴一寸金,寸金难买寸光阴。
以上是内存溢出为你收集整理的python-面向对象速查表-内置方法-内置函数-内置属性(只整理了部分内容)全部内容,希望文章能够帮你解决python-面向对象速查表-内置方法-内置函数-内置属性(只整理了部分内容)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)