魔法方法总笔记

-魔法方法总是被双下划线包围,例如__init__-
-魔法方法是面向对象的python的一切。如果你不知道魔法方法,说明你还没能意识到面向对象的Python的强大-
-魔法方法的“魔力”体现在他们总能够在适当的时候呗调用-

第一课笔记

  1. __ init__ (self[,参数1,参数2…])
    系统默认初始化为0(基本数据类型)或是空(指针数据类型),但是我们想要自己定义一个想要的初始值,这个时候就要重写或者自定义init方法。
#用户输入长宽求长方形的面积和周长
class Rectangle:
    def __init__(self,x,y):#这里我想要初始的长宽参数
        self.x = x
        self.y = y
    def mianji(self):
        return self.x*self.y
    def zhouchang(self):
        return 2*(self.x+self.y)

try:
 a=int(input('请输入长方形的长'))
 b=int(input('请输入长方形的宽'))
 bob = Rectangle(a, b)
 print('该长方形的面积是%d'%bob.mianji())
 print('该长方形周长是%d'%bob.zhouchang())
except:
 print('输入数值类型错误')

  1. __new __(cls[,…])
    new()方法是在类准备将自身实例化时调用。
    一个类可以有多个位置参数和多个命名参数,而在实例化开始之后,在调用 init()方法之前,Python首先调用new()方法。
class C(str):#继承str方法,str这个class没法修改
    def __new__(cls, string):#用new重新定义
        string=string.upper()#重新定义,再调用时将str转为大写
        return str.__new__(cls,string)
a=C('Iloveyou')
print(a)

结果如下

ILOVEYOU

3.__del __(self)
如果说init和new方法是python对象的构造器的话,那del就是析构器(释放空间)
在这里插入图片描述
第二课笔记
所谓的工厂函数(BIF)实际就是类对象
Python还提供了对自定义对象数值处理

电梯直达> Python 魔法方法详解 在这里插入图片描述

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(5)
b=new_int(9)
print(a+b)
print(a-b)

结果加减方法调换了

-4
14

反运算

class new_int(int):
      def __radd__(self, other):
          return  int.__sub__(self,other)#将加法换成减法
a=new_int(5)
b=new_int(9)
print(a+b)
print(5+b)#当左操作数不支持相应的操作时被调用,这时+左侧是常数5,调用后面b的radd方法

结果

14
4

增量赋值运算
a+=1>>a=a+1
a+=b>>a=a+b
上面左侧的为增量赋值

一元操作符
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值