面向对象内置方法之--__str__、__call__、__del__
- __str__: 在对象被打印的时候触发,可以用来定义对象被打印的输出格式
- __del__:在对象被删除的时候触发,可以 用来回收对象以外的其他相关资源,比如系统资源等。
- __call__:在对象呗调用的时候触发。
# -*- coding: utf-8 -*-
"""
__str__: 在对象被打印是自动触发,可以用来定义对象被打印时的输出信息 """ class People:
def __init__(self, name, age):
self.name = name
self.age = age obj1 = People('egon', 18)
print(obj1) # <__main__.People object at 0x00000000028B7438>
obj2 = list([1, 2, 3])
print(obj2) # [1, 2, 3] 内置的数据类型,已经定义好打印格式 class People:
def __init__(self, name, age):
self.name = name
self.age = age def __str__(self):
return '<name:%s | age:%s>' % (self.name, self.age) obj1 = People('egon', 18)
print(obj1) # <name:egon | age:18> # 通过 __str__自定义数据类型 """
__del__: 在对象被删除时自动触发,可以用来回收对象意外其他相关资源,比如系统资源
""" class Foo:
pass obj = Foo()
del obj # 主动删除 class Foo:
def __init__(self, x, filepath, encoding='utf-8'):
self.x = x
self.f = open(filepath, 'rt', encoding='utf-8') def __del__(self):
print('run.....回收对象关联的资源')
# 回收对象关联的资源
self.f.close() obj = Foo(1, 'a.txt')
print('============')
# ============
# run.....回收对象关联的资源 """
__call__:在对象被调用的时候触发
""" class Foo:
def __init__(self, x, y):
self.x = x
self.y = y obj3 = Foo(1, 2) # obj() # TypeError: 'Foo' object is not callable
print('+++++++++++++++++++++++++++++++++')
class Foo1:
def __init__(self, x, y):
self.x = x
self.y = y def __call__(self, *args, **kwargs):
print(self, args, kwargs) obj2 = Foo1(1, 2)
obj2(1,2,a=3,b=4) # <__main__.Foo1 object at 0x0000000002304278> (1, 2) {'a': 3, 'b': 4}
面向对象内置方法之--__str__、__call__、__del__的更多相关文章
- day34 反射、面向对象内置方法:如__str__、面向对象的软件开发
Python之路,Day21 = 反射.面向对象内置方法:如__str__.面向对象的软件开发 几个内置查看的方法使用 .__base__ 查看类的继承结构.mro() 对象找属性的顺序存在里面 -- ...
- 多态 鸭子类型 反射 内置方法(__str__,__del__) 异常处理
''' 1什么是多态 多态指的是同一种/类事物的不同形态 2 为何要有多态 多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象 多态性的精髓:统一 多态性的好处: 1增加了程序的 ...
- 封装,封装的原理,Property ,setter ,deleter,多态,内置函数 ,__str__ , __del__,反射,动态导入模块
1,封装 ## 什么是封装 what 对外隐藏内部的属性,以及实现细节,并给外部提供使用的接口 学习封装的目的:就是为了能够限制外界对内部数据的方法 注意 :封装有隐藏的意思,但不是单纯的隐藏 pyt ...
- Python进阶-XVIV 类的内置方法:__str__ 、__repr__、析构函数(__del__)、双下的call,eq,new,hash 以及item相关的三个方法
类的内置方法 它与内置函数有紧密的联系,有的内置函数就是调用的内置方法. 在顶级父类obj中有: 两个双下方法 obj.__str__ str(obj) obj.__repr__ repr(obj) ...
- 反射,内置方法,__str__ __repr__
反射 反射用到的mmp模块 def wahaha():print('wahaha') class QQxing: def __init__(self,name): self.name = name d ...
- 《Python》反射、内置方法(__str__,__repr__)
一.反射 通过字符串的形式操作对象相关的属性.(使用字符串数据类型的变量名来获取这个变量的值) Python中的一切事物都是对象(都可以使用反射) 反射类中的变量 反射对象中的变量 反射模板中的变量 ...
- Python--反射(重点)、面向对象内置方法:如__str__、面向对象的软件开发
复习: Python3统一了类与类型 类的名称空间在定义阶段产生,看名称空间:类.__dict__ Python3特点:可以多继承 Python3都是新式类 继承意义:解决重复代码 组合:也是解决 ...
- python面向对象内置方法关于属性篇
1.关于__xxxattr__之__getattr__.__setattr__.__delattr__ 2.关于__xxxitem__之__getitem__.__setitem__.__delite ...
- python 面向对象之反射及内置方法
面向对象之反射及内置方法 一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静 ...
随机推荐
- idea操作整理
前言 这篇记录一下,在idea使用的过程中一些加快开发效率的操作. live template  postfix 当使用一个数字或者一个参数按照以下写法会自动变成例子中的情况 100.for -&g ...
- Chapter 4 Invitations——17
"Then why —"He shrugged. "I was hoping you were just letting him down easy." “这为 ...
- Spring boot 之自动生成API文档swagger2
目前解决API的方案一般有两种 1.编写文档接口.2.利用一些现成的api系统.3.如我一般想搞点特色的就自己写个api系统:http://api.zhaobaolin.vip/ ,这个还支持多用户. ...
- 基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil
基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,把日常能用到的各种CRUD都进行了简化封装,让普通程序员只需关注业务即可,因为非常简单,故直接贴源代码,大家若需使用可以直 ...
- sed从入门到深入的使用心得
本人已经此系列的sed文章整理到pdf中,欢迎下载:玩透sed:探究sed原理 sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)se ...
- Log4Net使用学习笔记
项目源文件下载https://files.cnblogs.com/files/ckym/Log4NetTestSourceCode.zip Log4net是一款非常好用的日志记录的框架,使用它可以实现 ...
- C# 批量删除Word超链接
对于Word文档中包含较多的超链接,如果一个个来删除很花费时间和精力,本篇文章将提供一种可用于批量删除Word中的超链接的方法.这里的超链接可以是页眉页脚处的超链接.正文中的超链接.表格中的超链接.文 ...
- php编写生成酷炫验证码
<?php $im=imagecreate(200,100);//生成画布 imagecolorallocate($im,0,0,0);//背景色 $white=imagecoloralloca ...
- 流程控制值while 循环
一.结束循环的两种方式 1. 修改条件tag=Truewhile tag: print(1) print(2) print(3) tag=False print(4) 2.while + break ...
- 谷歌AI涉足艺术、太空、外科手术,再强调AI七原则
谷歌AI涉足艺术.太空.外科手术,再强调AI七原则 https://mp.weixin.qq.com/s/MJG_SvKCEBKRvL3IWpL0bA 9月18日上午,Google在上海的2018世界 ...