博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中的魔法方法
阅读量:6258 次
发布时间:2019-06-22

本文共 1049 字,大约阅读时间需要 3 分钟。

想多么简单就多么简单


__ getattribute __(self,name):当特性name被访问时自动被调用

__ getattr __(self,name):当特性name被访问且对象没有相应的特性时被自动调用
__ setattr __(self,name,value):当试图给特性name赋值时会被自动调用
__ delattr __(self,name):当试图删除特性name时被自动调用

class Rectangle:    def __init__(self):        self.width=0;        self.height=0;    def __setattr__(self,name,value):        if name == 'size':            self.width,self.height = value        else:            self.__dict__[name] = value    def __getattr__(self,name):        if name == 'size':            return self.width,self.height        else:            raise AttributeError

__ init__()方法:初始化方法,对象被创建时调用

__ iter __()方法:当被用作迭代器使用时,必须包含此方法
next()方法:每次被访问时都会调用这个方法一次
查找斐波那契数列中比1000大的数中的最小的数

class Fibs:        def __init__(self):            self.a = 0;            self.b = 1;        def __next__(self):            self.a,self.b = self.b,self.a+self.b            return self.a        def __iter__(self):            return selffibs = Fibs()for f in fibs:    if f > 999:        print(f)        break

从上面的例子可以看出,每一次for循环,就自动调用一次 _ _ next_ _()方法

转载地址:http://bohsa.baihongyu.com/

你可能感兴趣的文章
Ethereum地址是如何生成的
查看>>
峰采 #2
查看>>
高阶组件之属性代理
查看>>
Python 比特币 教程 之一:创建机器人
查看>>
extract-text-webpack-plugin用法
查看>>
java中的多线程你只要看这一篇就够了
查看>>
利用tornado实现表格文件预览
查看>>
深入call apply bind
查看>>
「前端面试题系列6」理解函数的柯里化
查看>>
用友云开发者中心助你上云系列之在线调试
查看>>
【跃迁之路】【724天】程序员高效学习方法论探索系列(实验阶段481-2019.2.14)...
查看>>
个人博客四|注册登录退出功能后台开发
查看>>
工作中常用到的ES6语法
查看>>
Django-Signals信号量
查看>>
flac格式转换mp3格式要用什么软件
查看>>
19. Remove Nth Node From End of List
查看>>
最佳在线图表软件
查看>>
Work with Alexa : 智能设备连接到Alexa
查看>>
[sublime系列文章] sublime text 3构建系统
查看>>
995. Minimum Number of K Consecutive Bit Flips
查看>>