类是抽象的,对象是具体的
魔法方法是面向对象的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