2020.7.17 python 魔法方法(p42-45)

类是抽象的,对象是具体的
魔法方法是面向对象的python的一切
1__init__():
是用来设置原始参数的,不能设置任何返回不能return

>>> class Juxing:
	def __init__(self,x,y):
		self.x=x
		self.y=y
	def C(self):
		return 2*(self.x+self.y)

	
>>> book=Juxing(3,4)
>>> book.C()
14

**2__new__()**方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。
(1)只有继承于object的新式类才能有__new__方法,一般系统自动调用
(2)__new__至少要有一个参数cls,代表要实例化的类

3__del__(self)
当所有指向该类的标签被销毁后执行该操作

>>> class A:
	def __init__(self):
		print('__init__')
	def __del__(self):
		print('__del__')
	
>>> a=A()
__init__
__del__
>>> a2=a
>>> a3=a2
>>> del(a3)
>>> del(a)
>>> del(a2)
__del__

算术运算
在这里插入图片描述
e.g

>>> class Jia(int):
	def __add__(self,other):
		return int(self)+int(other)
	
>>> a=Jia(3)
>>> b=Jia(5)
>>> a+b
8

反运算:反运算在运算符左右类型不同,且左边没用相应运算方法时被调用

>>> class Nint(int): #这里的int是父类
	def __radd__(self,other):
		return int.__sub__(self,other)
	
>>> a=Nint(5)
>>> b=Nint(3)
>>> a+b
8
>>> 1+b  #1不是对象,所以执行反运算
2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值