文档章节

Python中学习多重继承和类的属性的一个有趣的实例【2017.02.25】

睿松
 睿松
发布于 2017/02/25 15:44
字数 762
阅读 97
收藏 0

类的属性 

Python语言中的类的属性有2种:

  1. 实例属性
  2. 类属性

两类属性的区别在于:

  1. 实例属性即同一个类的不同实例,其值并不关联和影响。
  2. 类属性名是同一个类的实例所共有的,在类中直接定义,引用时用 类名.类变量名 形式,对该属性的修改会影响该类的所有实例。

类的继承

继承可以减少代码,增加灵活性。子类继承父类之后,就具有了父类中除了私有属性和私有方法外的其他属性和方法。而Python不同于其他语言,允许多重继承。

各类参考书中对类的特性的讲述和实例不少,本实例意在让大家体会下上述两个知识点,以免在遇到如上使用方法时有所困惑。

'''
此程序的知识点:
1.类的属性和实例属性的概念,namea和nameb为类属性,
在实例化的过程如改变其值,在下次实例化中,其属性将
为新值。

2.多重继承中继承顺序很重要,若继承的多个父类中有相同
的方法名,但在使用中未指定父类名,则Python解释器按照
从左到右搜索,即调用先继承勒种的同名方法。
'''

class PrntA:
    namea='PrntA'
    def set_value(self,a):
        self.a=a
    def set_namea(self,namea):
        prntA.namea=namea
    def info(self):
        print('打印A类信息:%s,%s'%(PrntA.namea,self.a))
class PrntB:
    nameb='PrntB'
    def set_nameb(self,nameb):
        PrntB.nameb=nameb
    def info(self):
        print('打印B类信息:%s'%(PrntB.nameb,))
class Sub(PrntA,PrntB):
    pass
class Sub2(PrntB,PrntA):
    pass
class Sub3(PrntA,PrntB):
    def info(self):
        PrntA.info(self) #注释
        PrntB.info(self) #注释
print('使用第一个sub class:')
sub=Sub()
sub.set_value('CLASSA1')
sub.info()
sub.set_nameb('CLASSB1')
sub.info()
print('*****华丽分割线*****')
print('使用第二个sub class:')
sub2=Sub2()
sub2.set_value('CLASSA2')
sub2.info()
sub2.set_nameb('CLASSB2')
sub2.info()
print('*****华丽分割线*****')
print('使用第三个sub class:')
sub3=Sub3()
sub3.set_value('CLASSA3')
sub3.info()
sub3.set_nameb('CLASSB3')
sub3.info()

运行结果

============== RESTART: C:/Users/Administrator/Desktop/HAHHA.py ==============
使用第一个sub class:
打印A类信息:PrntA,CLASSA1
打印A类信息:PrntA,CLASSA1
*****华丽分割线*****
使用第二个sub class:
打印B类信息:CLASSB1
打印B类信息:CLASSB2
*****华丽分割线*****
使用第三个sub class:
打印A类信息:PrntA,CLASSA3
打印B类信息:CLASSB2
打印A类信息:PrntA,CLASSA3
打印B类信息:CLASSB3

怎么样,考虑到上述的知识点,结果跟你们想象的有没有什么不一样呢?

© 著作权归作者所有

共有 人打赏支持
睿松
粉丝 0
博文 14
码字总数 4038
作品 0
海淀
程序员
私信 提问
Python学习之面向对象高级编程

数据封装、继承和多态只是面向对象程序设计中最基础的3个概念。在Python中,面向对象还有很多高级特性,如:多重继承、定制类、元类等概念。 slots 作用:限制实例的属性。 Python允许在定义...

stone_zhu
06/19
0
0
Python学习笔记-面向对象篇

定义 实例化和调用 访问限制 双下划线: 私有变量(解释器把双下划线改成了单下划线,依旧可以通过单下划线访问) 单下划线: 可以被外部访问,但约定俗称不要访问 双下划线包围: 特殊变量,...

路小磊
2015/07/23
0
0
Python学习总结(四):面向对象编程,转换思维

从这节开始,我们将要接触编程思想——面向对象编程,很重要!!!学过C或者Java都知道,不管是面向过程还是面向对象,想要彻底掌握,必须理解这种程序设计思想,这样才能熟练的编程,而不是...

海岸线的曙光
01/24
0
0
史上最全的Python面向对象知识点疏理

面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量:类变量在整个实例化的对象中是公用的。类变量定义...

乐乎无趣
2017/11/03
0
0
Python基础总结成千行代码,让Python入门更简单!

只要学会这千行代码,不管你是零基础还是弱基础或是没有接触过编程,都可以快速入门Python!当时我就不信邪啊,等我看完之后,即使作为一个Python老鸟了,还是领会到了很多教授他的独特见解!...

糖宝lsh
09/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Pycharm上Django的使用 Day8

1.添加新条目 1>编写用于添加新条目的表单 在forms.py中创建一个与模型Entry相关联的表单 1处给字段'text'指定一个空标签 2处定义小部件widgets,widgets是一个HTML表单元素 2>定义new_entry...

不会TC的猫
12分钟前
1
0
MongoDB副本集

MongoDB介绍 早期版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主 目前已经淘汰master-slave模式,改为副本集,这种模式下有一个...

chencheng-linux
25分钟前
1
0
WebService 客户端记录

https://blog.csdn.net/qiuhan/article/details/49487009

呼呼南风
25分钟前
0
0
七牛云彭垚:智能平台的创新和发展

2018 年 11 月 14 日至 11 月 18 日,第二十届中国国际高新技术成果交易会(简称高交会)在深圳成功举办,七牛云作为国内领先的以数据智能和视觉智能为核心的企业级云计算服务商受邀参展。 ...

七牛云
32分钟前
0
0
Java内存模型原理,你真的理解透彻了吗?

内存模型产生背景 在介绍 Java 内存模型之前,我们先了解一下物理计算机中的并发问题,理解这些问题可以搞清楚内存模型产生的背景。 物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物...

小刀爱编程
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部