python类中的一些神奇方法
__str__:用于在print(对象)时,直接打印__str__的返回值
class Animal:
def __init__(self, name):
self.name = name
def __str__(self):
return self.name d = Animal("dog")
print(d)
__fun_name:私有方法
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
self.__test()
print("吃东西")
#test为私有方法,不能在类外部调用
def __test(self):
print("debug") d = Animal("dog")
# 提示 AttributeError: 'Animal' object has no attribute '__test'
# d.__test()
d.eat()
__del__:对象销毁时调用的方法
class Animal:
def __init__(self, name):
self.name = name
def __del__(self):
print("---go die---") d = Animal("dog")
dd = d
del d #仅仅删除一个引用计数,引用计数为0时才销毁对象,并且调用__del__方法
del dd
print("******")
__new__:根据类对象创建实例对象(发生在__init__之前)
比如代码中定义了Dog类,在类定义结束后创建了类对象,然后调用Dog()创建实例对象,创建实例对象过程中,如果Dog自己实现了__new__(cls)方法(cls表示根据类对象创建实例对象),那么需要return object.__new__()才能正确创建实例对象。
class Dog(object):
def __init__(self):
print("--init---") def __del__(self):
print("--del---") def __new__(cls):
print("---new---")
return object.__new__(cls) #调用顺序 Dog.__new__ -> object.__new -> d.__init__ -> d.__del__
d = Dog() 结果:
---new---
--init---
--del---
python类中的一些神奇方法的更多相关文章
- 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘
孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...
- Python 简明教程 --- 20,Python 类中的属性与方法
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 与客户保持良好的关系可以使生产率加倍. -- Larry Bernstain 目录 类中的变量称为属 ...
- [ python ] 类中的一些特殊方法
item系列 __getitem__(self, item) 对象通过 object[key] 触发 __setitem__(self, key, value) 对象通过 object[key] = ...
- python类中__unicode__和__str__方法的妙用
在python类中有个__str__的特殊方法,该方法可以使print打印出来的东西更美观,在类里就可以定义,如下代码: class Test: def __init__(self, name, jo ...
- 第8.18节 Python类中内置析构方法__del__
一. 引言 基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件.释放内存.输出日志.清理 ...
- python 类中staticmethod,classmethod,普通方法
1.staticmethod:静态方法和全局函数类似,但是通过类和对象调用. 2.classmethod:类方法和类相关的方法,第一个参数是class对象(不是实例对象).在python中class也 ...
- python类中保存非绑定方法作为成员函数
习惯了函数式,动不动传一个函数.但是直接把函数作为类方法保存,再调用时会报错. 举一个unittest时的例子 class MyTestCase(unittest.TestCase): @classm ...
- 第8章 Python类中常用的特殊变量和方法目录
第8章 Python类中常用的特殊变量和方法 第8.1节 Python类的构造方法__init__深入剖析:语法释义 第8.2节 Python类的__init__方法深入剖析:构造方法案例详解 第8. ...
- 简述 Python 类中的 __init__、__new__、__call__ 方法
任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建.初始化.使用.垃圾回收,不同的阶段由不同的方法(角色)负责执行. 定义一个类时,大家用得最多的就 ...
随机推荐
- Libevent:9Evbuffers缓存IO的实用功能
Libevent的evbuffer功能实现了一个字节队列,优化了在队列尾端增加数据,以及从队列前端删除数据的操作. Evbuffer用来实现缓存网络IO中的缓存部分.它们不能用来在条件发生时调度IO或 ...
- input标签和fmt:formatDate 在jsp中同时使用引号解决办法
input标签和fmt:formatDate 在jsp中同时使用引号解决办法 使用input标签设置默认值value并格式化fmt时间格式处理 格式化前: <input type="d ...
- 3、.net core 部署到IIS
1)下载对应的Hosting Bundle https://dotnet.microsoft.com/download/dotnet-core/2.2 2)VS发布项目,选择window平台环境 3 ...
- Activiti快速入门项目-kft-activiti-demo
1.项目简介 1.1 项目信息 本项目旨在让Activiti初学者可以快速入门,使用工作流里面的请假流程作为Activiti企业实战的Hello World. 简单通过这个实例说明如何结合流程与业务, ...
- 一个div居于另一个div底部
一个div如何与另一个div底部对齐,方法有很多,比如使用绝对定位 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...
- hdu 1217 Arbitrage(佛洛依德)
Arbitrage Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- github下载慢,轻松提速教程
获取github的IP地址访问:https://www.ipaddress.com/ 网址 依次获取以下三个网址的IP github.comgithub.global.ssl.fastly.netco ...
- 五分钟搭建一个基于BERT的NER模型
BERT 简介 BERT是2018年google 提出来的预训练的语言模型,并且它打破很多NLP领域的任务记录,其提出在nlp的领域具有重要意义.预训练的(pre-train)的语言模型通过无监督的学 ...
- 使用java实现CNN的实战
使用java实现CNN的实战 1.要实现CNN,其中包括 卷积.池化(下采样).分类器.优化方法.分类器.反向传播 2.可以使用一个三维数组来表示一张图片(通道.行.列) 3.卷积,卷积的方式有三种: ...
- JS 复制文本兼容移动端 iOS & android
有几个需要注意的地方. 首先文本只有选中才可以复制,所以简单的做法就是创建一个隐藏的 input,然后绑定需要复制的文本. 另外如果将 input 设置为 `type="hidden&quo ...