python定制类详解
1.什么是定制类
python中包含很多内置的(Built-in)函数,异常,对象。
分别有不同的作用,我们可以重写这些功能。
2.__str__
输出对象
class Language(object):
def __init__(self):
self.name = 'Python' print(Language())
运行结果:

class Language(object):
def __init__(self):
self.name = 'Python'
def __str__(self):
return "Language():%s"%(self.name)
print(Language())
运行结果:

3.__iter__
遍历对象
class Language(object):
def __init__(self):
self.name = 'Python'
self.count = 0 def __iter__(self):
return self def __next__(self):
self.count += 1
if self.count > 5:
raise StopIteration()
return self.count
language = Language()
for i in language:
print(i)
运行结果:

__iter__返回的是迭代对象language
for..in..会自动调用__iter__迭代对象的__next__方法,直到__next__方法返回StopIteration异常。
4.__getitem__
定义了__getitem__方法后才能使用索引取值
class Language(object):
def __getitem__(self, item):
return item language = Language()
print(language[0])
运行结果:

5.__getattr__
没有找到属性时,才会调用__getattr__
class Language(object):
def __init__(self):
self.name = 'Python' def __getattr__(self, item):
if item == 'score':
return 9
elif item == 'rank':
return lambda :5 language = Language()
print(language.score)
print(language.rank())
运行结果:

6.__call__
对象可执行
class Language(object):
def __init__(self):
self.name = 'Python' def __call__(self, *args, **kwargs):
print('My name is %s'%self.name) language = Language()
language()
运行结果:

python定制类详解的更多相关文章
- Python 元类详解
一.Type介绍 在Python中一切皆对象,类它也是对象,而元类其实就是用来创建类的对象(由于一切皆对象,所以元类其实也是一个对象). 先来看这几个例子: 例1: In [1]: type(12) ...
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- Python基础知识详解 从入门到精通(七)类与对象
本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...
- Python 多进程 multiprocessing.Pool类详解
Python 多进程 multiprocessing.Pool类详解 https://blog.csdn.net/SeeTheWorld518/article/details/49639651
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
- (转)python collections模块详解
python collections模块详解 原文:http://www.cnblogs.com/dahu-daqing/p/7040490.html 1.模块简介 collections包含了一些特 ...
- python自定义异常实例详解
python自定义异常实例详解 本文通过两种方法对Python 自定义异常进行讲解,第一种:创建一个新的exception类来拥有自己的异常,第二种:raise 唯一的一个参数指定了要被抛出的异常 1 ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
- python之struct详解
python之struct详解 2018-05-23 18:20:29 醉小义 阅读数 20115更多 分类专栏: python 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...
随机推荐
- Mac Oracle SqlDeveloper 快捷输入
用惯了 plsql 的快捷输入,换了 Mac Oracle SqlDeveloper反倒是找不到了,翻出去找了几次终于找到 SqlDeveloper -- preferences -- 数据库(dat ...
- webpack配置上线地址
webpack配置上线地址主要使用output配置项下的publicPath. webpack.config.js配置文件为: var htmlWebpackPlugin = require('htm ...
- rEFind 教程
资料 在空白区右键,新建一个文件,命名为rEFind! 双击进入rEFind文件夹,我们开始搬文件了! 解压refind.zip 创建一个文件,仿照refind.conf-sample写一个文件,命名 ...
- js 判断iframe是否加载完毕
js 判断iframe是否加载完毕 CreationTime--2018年9月13日15点30分 Author:Marydon 1.javascript实现 window.onload = fun ...
- DB2建库简单例子
--重启数据库 FORCE APPLICATION ALL DB2STOP DB2START --创建数据库 TERRITORY US COLLATE USING SYSTEM ) CONNECT T ...
- 4、第一个JAVA程序(Hello World)
第一步: 新建一个文本文档,在里面输入内容 public class HelloWorld { public static void main(String[] args){ System.out.p ...
- 转:一个多目录结构C程序的Makefile
来源: ChinaUnix博客 一个多目录结构的C程序Makefile,代码存在main init input output exit目录. CC = gcc RDIR = RelsMAIN_DIR ...
- Mybatis日期类型的关系判断
进行时间段的查询时,在mapper文件中直接使用">","<"等关系运算符是无法解析的 <if test="executeStart ...
- MFC图形绘制——绘制直尺和坐标系
一.实验目的 1.掌握建立MFC应用程序的方法: 2.掌握映射模式. 二.实验内容 1.在MFC中绘制直尺,直尺需要有刻度,类似于日常学生使用的透明塑料直尺,需要建立四个直尺,分别分布在屏幕客户区的上 ...
- Redis客户端
1.自带的: Redis-cli 2.redis-desktop-manager-0.7.9.809 是一个图形化客户端 但是不支持集群 **由于linux防火墙默认开启,redis的服务端口63 ...