标签:学习笔记
继承class Cat(Animal) 括号中为该类的父类列表
class Animal:
__count=100
heigtht=0
def showcount3(self):
print(self.__count)
class Cat(Animal):
name=‘cat‘
__count=200
c=Cat()
c.showcount3()
结果为100
因为子类调用了父类获取父类私有变量的方法 self.count的count作用域是在父类下的,其真正调用的self._Animal__count,而这个属性只有父类有
一个类继承自多个类就是多继承,他将具有多个类的特征
通常不能独立工作,因为它是准备混入别的类中的部分功能实现
其祖先类也应是Mixin类
使用Mixin时,其通常在继承列表的第一个位置
def printable(cls):
def _print(self):
print(self.content, ‘decorator‘)
cls.print = _print
return cls
class Document:
def __init__(self, content):
self.content = content
class Word(Document):
pass
class Pdf(Document):
pass
@printable
class PrintableWord(Word): pass
print(PrintableWord.__dict__)
print(PrintableWord.mro())
pw = PrintableWord(‘test string‘)
pw.print()
@printable
class PrintablePdf(Word):
pass
class Document:
def __init__(self, content):
self.content = content
class Word(Document):
pass
class Pdf(Document):
pass
class PrintableMixin:
def print(self):
print(self.content, ‘Mixin‘)
class PrintableWord(PrintableMixin, Word):
pass
print(PrintableWord.__dict__)
print(PrintableWord.mro())
pw = PrintableWord(‘test string‘)
pw.print()
class SuperPrintableMixin(PrintableMixin):
def print(self):
print(‘~‘ * 20)
super().print()
print(‘~‘ * 20)
class SuperPrintablePdf(SuperPrintableMixin, Pdf):
pass
print(SuperPrintablePdf.__dict__)
print(SuperPrintablePdf.mro())
spp = SuperPrintablePdf(‘super print pdf‘)
spp.print()
标签:学习笔记
原文地址:http://blog.51cto.com/11281400/2115683