python类集成多个类_Python中学习多重继承和类的属性的一个有趣的实例【2017.02.25】...

类的属性

Python语言中的类的属性有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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值