python 继承、多继承、魔法方法、装饰器

1.继承

用法:
.在定义类时,可以从已有的类继承,
被继承的类称为基类(父类),新定义的类称为派生类(子类)。

.在类中找不到调用的属性时就搜索基类,
 如果基类是从别的类派生而来,这个规则会递归的应用上去。
 反过来不行。

.如果派生类中的属性与基类属性重名,那么派生类的属性会覆盖掉基类的属性。
 包括初始化函数。

.派生类在初始化函数中需要继承和修改初始化过程,
 使用’类名+__init__(arg)’来实现继承和私有特性,也可以使用super()函数。

issubclass(类名1,类名2)
判断类1是否继承了类2

作用:面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。
继承完全可以理解成类之间的类型和子类型关系。

子类在重写父类方法之后,如果要继承父类方法中的功能,要先调用父类的方法
class.fun(self)

2.多继承

子类同时继承多个父类。
当继承的类有同种方法的时候,只会继承前面一个的方法

3.类的特殊方法(魔法方法)

类属性:
__dict__ : 类的属性(包含一个字典,由类的数据属性组成)
__doc__ :类的文档字符串
类方法:  
__init__    初始化
__repr__    c1   直接返回这个对象
__str__     print(c1 )如果类里面定义了__repr__,没有定义__str__的话print(x)时也会返回__repr__的内容,或者说__repr__的优先级更高
__call__    c1()   使实例可被调用

运算符方法
__add__(self,other)     x+y
__sub__(self,other)     x-y 
__mul__(self,other)     x*y  
__mod__(self,other)    x%y
__iadd__(self,other)    x+=y
__isub__(self,other)    x-=y 
__radd__(self,other)    y+x
__rsub__(self,other)     y-x 
__imul__(self,other)    x*=y 
__imod__(self,other)    x%=y
__truediv__(self,other) x/y
__floordiv__(self,other) x//y

4.装饰器

装饰器(deco):装饰函数的参数是被装饰的函数对象,返回原函数对象
     装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象
     概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

5.类装饰器

@property 装饰过的函数返回的不再是一个函数,而是一个property对象
      装饰过后的方法不再是可调用的对象,可以看做数据属性直接访问。

@staticmethod (静态方法)把没有参数的函数装饰过后变成可被实例调用的函数,      
         函数定义时是没有参数的,可以不接收参数

@classmethod (类方法)把装饰过的方法变成一个classmethod类对象,既能被类调用又能被实例调用。
注意参数是cls代表这个类本身。     

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。
而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。
这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值