python类属性继承和定制

1 python类属性继承和定制

python通过子类继承父类,并定制特有属性,而不需要对父类进行修改。

python通过类继承实现程序的分解和定制。

1.1 python属性继承

python类产生实例对象,类继承于超类。

python类通过继承成为超类的子类。

NO描述
1超类搜索树中位置较高的类称为超类。
2子类搜索树中位置较低的类称为子类。

子类通过继承获得超类的属性(数据属性和方法属性)。

NO#描述
1超类位置超类列在class语句后的括号内,多个超类用逗号分隔,称为多重继承。
2类属性继承子类继承超类的全部属性。读取属性时,从子类开始,再按从下到上,从左到右的属性,在超类里面读取。
3实例属性继承实例继承类的全部可读属性。读取属性时,从实例开始,再到类,最后到超类。
4点号运算包括“类.属性”、“实例.属性”、“self.属性”,将按从下到上,从左到右的顺序对类树进行搜索。
5程序定制通过子类定制超类的逻辑,而不是修改超类程序。子类可以重现定义超类的属性,也可以新增子类自己的属性。

1.2 python继承类

用法

class 子类(超类1,...,超类n):
    #新增定制属性
    子类变量=值
    子类方法(self):pass
    #覆盖超类属性
    超类同名变量=值
    超类同名方法(self):pass

描述

python子类继承超类后,可以新增子类自己的属性,进行定制。

也可以修改超类同名属性,进行定制。

也可以不增不改直接继承超类属性。

文件

E**😗*\documents\F盘\testclass.py

class MyClassA:
    s = 'MyClassA.s'
    x = 'MyClassA.x'
    y = [1,2,3]
    def setData(self,value):
        print('MyClassA.setData.self.data={}={}'.format(value,self))
        self.data = value
        
    def display(self):
        print('MyClassA.display.self.data={}={}'.format(self.data,self))
        
class MyClassB(MyClassA):
    x = 'MyClassB.x'
    m = 'MyClassB.m'
    
    def display(self):
        print('MyClassB.display.self.data={}={}'.format(self.data,self))
        
    def bmethod(self):
        print('MyClassB.bmethod')
        
if __name__ == '__main__':
    b1=MyClassB()
    # b1.s 继承 MyClassA
    print('b1.s={}'.format(b1.s))
    # b1.x 覆盖 MyClassA,取 MyClassB
    print('b1.x={}'.format(b1.x))
    
    # b1.setData 继承 MyClassA
    b1.setData('b1')
    # b1.display 覆盖 MyClassA,取 MyClassB
    b1.display()
    
    # b1.m 为 MyClassB 新增定制数据属性
    print('b1.m={}'.format(b1.m))
    # b1.bmethod 为 MyClassB 新增定制方法属性
    b1.bmethod()

示例

# 打开cmd,执行下面示例
E:\documents\F盘>python testclass.py
b1.s=MyClassA.s
b1.x=MyClassB.x
MyClassA.setData.self.data=b1=<__main__.MyClassB object at 0x00F28C90>
MyClassB.display.self.data=b1=<__main__.MyClassB object at 0x00F28C90>
b1.m=MyClassB.m
MyClassB.bmethod
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值