python学习笔记(三)--类进阶

本文介绍了Python中类的继承方式及其特点,包括多重继承、方法重写与调用、特殊方法重写等内容。此外还讲解了如何使用@property定义属性操作,以及静态方法和类成员方法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

前言

此文仅为记录学习要点使用

继承

方式:class classname(superClass1,superClass2,...):

 

支持多重继承,但先继承的类方法会重写后继承的方法。换句话说,即后继承的类只会往子类增加变量和方法看,不会修改覆盖(从左往右)

 

 

重写/调用父类方法

1、调用

方式:super(childType,object).parentfunction(param)

 

super函数可以object在childType类型下直接父类,也就是说如果A->B->C->D,那么有实例d,调用A的方法就要super(B,d),通过获取B的直接父类来调用A的方法。覆盖与重写父类方法不会在这里生效

 

 

 

2、重写

通过相同的函数名和参数,重写父类的方法,覆盖隐藏父类的方法。当父类是由子类构造函数生成时,父类方法会被子类方法覆盖隐藏

 

2.1 特殊的方法重写

由于以__(‘_’2个)开头,__(‘_’2个)结尾的为系统基本操作函数,也就是说诸如:A.a,A.a=1等操作都是使用系统基本操作函数进行操作的,所以可以通过对这些系统基本操作函数进行重写,对这些基本操作进行重新定义。但是这样的做法很危险,因为重写这些基本操作函数很容易出问题。

def __getattribute__(self, name)
def __setattr__(self, name, value)

是.取值和=赋值的对应的基本操作函数

通过继承重写或者实现必须的基本操作函数,可以自定义序列类和映射类,并且可以通过这样的做法对类访问和操作进行拦截处理

 

属性操作

可以通过property(fget,fset,fdel,doc)来定义一个属性并定义其基本操作(查改删注)

fget获取的函数

fset设置的函数

fdel删除的函数

doc的属性注释

例子:size=property(getSize,setSize)

x.size<==>x.getSize()

x.size=A<==>x.setSize(A)

 

静态方法与类成员方法

 

静态方法与类成员方法最大的区别,类方法可以通过参数访问调用类成员变量,而静态方法无法访问类成员变量。

1 静态方法

方式:

@staticmethod

def staticfun():

code

通过@staticmethod进行修饰,表静态方法,其中不带self参数

静态方法可以继承,也可以重写

 

 

2 成员方法

 

方式:

@classmethod

def classfun(cls):

code

通过@classmethod进行修饰,表类成员方法,固定参数为cls,为调用该方法的实例类型,可以继承重写。也就是说如果是在父类中定义了类方法,修改子类的一个类变量。那么如果由父类调用的话,会动态在父类结构上新增一个类变量(基本数值类型)或者出现找不到目标(引用类型)。由子类继承成员方法调用才能正确执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值