1.__init__

 >>> class Rectangle:
def __init__(self,x,y):
self.x=x
self.y=y
def getPeri(self):
return(self.x+self.y)*2
def getArea(self):
return self.x*self.y >>> rect=Rectangle(3,4)
>>> rect.getPeri()
14
>>> rect.getArea()
12
>>> class A:
def __init__(self):
return "A fo A-Cup" >>> a=A() #由于定义了A有返回值了,所以会报错。init无返回值
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
a=A()
TypeError: __init__() should return None, not 'str'

2.__new__(cls[,])

 >>> class CapStr(str):
def __new__(cls,string): #传入str化身为string
string=string.upper() #string转换为为大写字符串
return str.__new__(cls,string)#返回的时候必须重写new方法,否则则会自动调用capstr函数
>>> a=CapStr("I love fishC.com!")
>>> a
'I LOVE FISHC.COM!'

3.__del__(self):当对象将要被销毁的时候,此方法就会被调用

 >>> class C:
def __init__(self):
print("我是__init__方法,我被调用了...")
def __del__(self):
print("我是__del__方法,我被调用了...") >>> c1=C()
我是__init__方法,我被调用了...
>>> c2=c1
>>> c3=c2
>>> del c3
>>> del c2
>>> del c1 #只有删除了所有引用方法C的对象后,才启动垃圾回收机制,垃圾回收机制在销毁对象的时候,会自动调用del方法,对其中的内容进行垃圾回收,才会打印出来回收的内容。
我是__del__方法,我被调用了...

二、算数运算

1.因为python万物皆对象,所以对象中的内容也是可以相加的。

 >>> type(len)
<class 'builtin_function_or_method'>
>>> type(dir)
<class 'builtin_function_or_method'>
>>> type(int)
<class 'type'>
>>> type(list)
<class 'type'>
>>> class C:
pass >>> type(C)
<class 'type'>
>>> a=int('')
>>> a
123
>>> b=int('')
>>> a+b
579

2.魔法函数实例

 >>> class New_int(int):
def __add__(self,other):
return int.__sub__(self,other)
def __sub__(self,other):
return int.__add__(self,other) >>> a=New_int(3)
>>> b=New_int(5)
>>> a+b #a+b自动调用__add__方法中的
-2
>>> a-b
8
>>> class Try_int(int):
def __add__(self,other):
return self+other
def __sub__(self,other):
return self-other >>> a=Try_int(3)
>>> b=Try_int(5)
>>> a+b
下方一连串报错。原因是,a+b,调用__add__函数,self绑定a进来,other代表b。而相当于加法,又进来__add__方法,进来有是加法,然后又递归。
25 #下面让a+b后不报错
>>> class Try_int(int):
def __add__(self,other):
return int(self)+int(other)
def __sub__(self,other):
return int(self)-int(other) >>> b=Try_int(5)
>>> a=Try_int(3)
>>> a+b
8 #由于上面定义的__add__方法中返回一个整型,__sub__方法中返回一个整型,所以可以相加成一个整型数据。

3.魔法函数含义:

4.divmod(a,b):返回的值是一个元祖:(a//b,a%b)

5.__lshift__(self,other):按位左移。这个魔法方法代表的数是二进制数组成的,例如3==00000011,按位左移一位就是00000110

三、反运算符

 #__add__方法前带r,代表add的反运算符,例如 a+b,处于add两项中的前一项a为主动一方,b为被动一方,所以当add前者a有值的时候,直接进入add运算,如果a娶不到值的时候执行反运算,也就是radd中的函数。
class Nint(int):
def __radd__(self,other):
return int.__sub__(self,other) >>> a=Nint(3)
>>> b=Nint(5)
>>> a+b
8
>>> 1+b #执行反运算(sub中self取的b值,other取 的1 5-1=4)
4
 >>> 1-b------#思考为什么=-4
-4
>>> 1+b
4
>>> class Nint(int):
def __radd__(self,other):
return int.__sub__(other,self) #括号中的顺序为减法顺序other-self >>> b=Nint(5)
>>> 1+b(self代表b=5,other代表1,1-5=-4)
-4
#增量赋值运算
>>> a=a+b
#一元操作符
参照书611页

【Pyton】【小甲鱼】魔法方法的更多相关文章

  1. 【Pyton】【小甲鱼】类和对象

    一.类 定义一个类,例子如下: class Turtle: #定义一个名为Turtle的类,Python中类型约定以大写字母开头 #属性 color='green' weight=10 legs=4 ...

  2. 【Pyton】【小甲鱼】异常处理:你不可能总是对的

    Exception 1.assertionerror举例 >>> my_list=['小甲鱼是帅哥'] >>> assert len(my_list)>0 & ...

  3. 【Pyton】【小甲鱼】文件

    1.打开文件的集中模式: 2.文件对象方法: 对于文件对象方法的练习代码: 读取F:\\script\\script.txt位置文件中内容 >>> f=open('F:\\scrip ...

  4. 【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜

    pickle(泡菜): picking:将对象转换为二进制 unpicking:将二进制转换为对象 1 >>> import pickle 2 #picking:对象导入到文件中(二 ...

  5. 小甲鱼Python3笔记

    000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...

  6. 零基础学习python_魔法方法(41-48课)(迭代器)

    接下来这个为啥要叫魔法方法呢,额,这个嘛我是跟小甲鱼的视频取的名字一样的,因为会讲比较多杂的东西,有... 魔法方法详细阅读地址:http://bbs.fishc.com/thread-48793-1 ...

  7. 小甲鱼Python笔记(类)

    类和对象 类的构造方法 def __init__(): 1 class People: 2 def __init__(self,name): 3 self.name = name 注意:在构造方法中的 ...

  8. 【转】Python 魔法方法大全

    转载自鱼C论坛:http://bbs.fishc.org/thread-48793-1-2.html 据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Pyt ...

  9. 小甲鱼零基础入门学习python--课后作业

    [小甲鱼零基础入门学习python--课后作业] 小甲鱼零基础入门学习python--课后作业 本章内容: 1.基础部分的作业 2.函数部分的作业 3.字典.集合.文件部分作业 4.异常 5.Easy ...

随机推荐

  1. 《JavaScript 秘密花园》

    恰巧今天是传统民间重要的节日之一--七夕节: 被大家挂在嘴上最多的一句话便是:有对象了吗?这不-- 这样的话,那咱就先给new出一个对象吧: var boyfriend = new Object(); ...

  2. odbc数据源for mysql

    1. 下载mysql适配器并安装 mysql-connector-odbc-3.51.20-win32.exe 2. 配置数据源 “开始” ->”管理工具“ -> “数据源(ODBC)”- ...

  3. codeforces水题100道 第三题 Codeforces Beta Round #47 A. Domino piling (math)

    题目链接:http://www.codeforces.com/problemset/problem/50/A题意:一个NxM的举行中最多能放多少个1x2的矩形.C++代码: #include < ...

  4. hdu_1086 You can Solve a Geometry Problem too(计算几何)

    http://acm.hdu.edu.cn/showproblem.php?pid=1086 分析:简单计算几何题,相交判断直接用模板即可. 思路:将第k条直线与前面k-1条直线进行相交判断,因为题目 ...

  5. mac下升级terminal/终端的subversion版本方法

    雖然現在程式碼管理已經以 Git 為主了,不過偶爾需要維護一些舊案子還是會用 SVN,懶得轉了. Mac OS 本身有內建 SVN,不過卻是 1.6 版,最近修改一個舊案子就有碰到 project 已 ...

  6. eclipse安装maven时候如果conf文件夹中有setting文件则会以这个文件为主,如果自己设置了user的配置文件则会无效

    eclipse安装maven时候如果conf文件夹中有setting文件则会以这个文件为主,如果自己设置了user的配置文件则会无效

  7. iPhone X 上删除白条

    方案一:纯色背景的情况下,解决方案就是background-color在您的body代码上设置属性: 方案二:视口入,viewport-fit=cover: <meta name="v ...

  8. 基于spring-cloud的微服务(2) eureka服务提供方的注册和消费方的消费

    启动Eureka注册中心之后,服务提供方就可以注册到Eureka上去(作为一个Eureka的客户端) 我们使用IDEA提供的spring initializer来新建一个springcloud项目 填 ...

  9. 【CF819D】Mister B and Astronomers EXGCD

    [CF819D]Mister B and Astronomers 题意:小鼠Jack想当太空人(哦不,太空鼠)!为此,它在夜晚带领一堆小朋友一起来到户外看星星.一共有 $n​$ 只小鼠,这些小鼠围成一 ...

  10. 洛谷P2569 股票交易【dp】【单调队列】

    题目描述 最近 \text{lxhgww}lxhgww 又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,\text{lxhgww}lxhgww 预测到了 ...