Python之接口类,抽象类与封装之私有
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python之接口类,抽象类与封装之私有,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2918字,纯文字阅读大概需要5分钟。
内容图文
![Python之接口类,抽象类与封装之私有](/upload/InfoBanner/zyjiaocheng/836/98c0981c17b848ffa37a188b3c077d2f.jpg)
# Python中的接口类代码形式是一样的,接口类鼓励多多继承,抽象类鼓励单继承 # from abc import ABCMeta,abstractmethod # # 定义一个游泳接口类 # class SwimAnimal(metaclass=ABCMeta): # 指定使用ABCMeta元类来创建该类 # @abstractmethod # def swim(self): # pass # # 定义一个飞行接口类 # class FlyAnimal(metaclass=ABCMeta): # @abstractmethod # def fly(self): # pass # # 定义一个行走接口类 # class WalkAnimal(metaclass=ABCMeta): # @abstractmethod # def walk(self): # pass # # 定义一个吃东西接口类 # class EatAnimal(metaclass=ABCMeta): # @abstractmethod # def eat(self): # pass # # 创建一个老虎类,老虎具有吃,行走与游泳的特征 # class Tigger(EatAnimal,SwimAnimal,WalkAnimal): # pass # # 创建一个鸟类,鸟具有吃,飞行与行走的特征 # class Birds(EatAnimal,FlyAnimal,WalkAnimal): # def eat(self):print("a bird is eating") # def fly(self):print("a bird is swimming") # def walk(self):print("a bird is walking") # tig = Tigger() # TypeError: Can't instantiate abstract class Tigger with abstract methods eat, swim, walk # 父类定义成接口类,具有约束作用,子类必须实现该方法 # bird = Birds() # bird.eat() # bird.fly() # bird.walk() # 抽象类与接口类模式相同 # from abc import ABCMeta,abstractmethod # class AllFile(metaclass=ABCMeta): # @abstractmethod # def read(self):pass # @abstractmethod # def write(self):pass # # 创建一个文本操作类,具有读写功能 # class TextFile(AllFile): # def read(self):print("read from a text file") # def write(self):print("write into a text file") # # 创建一个word文档操作类 # class WordFile(AllFile): # def read(self):print("read from a word file") # def write(self):print("write into a word file") # # def dealFile(obj): # obj.read() # obj.write() # text = TextFile() # word = WordFile() # dealFile(text) # dealFile(word) # 抽象类鼓励单继承,归一化设计,对外部调用者来说所有的文件具有相同的操作,给文件操作定义规范 # Python是动态强类型语言,定义时具有弱类型语言的特性,所以自带多态属性,例如一切皆文件的操作思想,所有操作 # 均自己内部定义读和写操作即可(具有松耦合的特性),对于外部调用者来说,传入的参数是谁,则调用的是谁的方法 # 无序抽象一个父类来支持多种类型对象的传入,也即Python崇尚的"鸭子类型" # Python中封装的私有:私有属性,私有方法,私有静态属性 class A: __staticVar = '私有静态属性' def __init__(self): self.__privateAttr = "私有属性" def __privateFun(self): # 私有方法 return self.__privateAttr def get(self): # 共有方法 return self.__privateFun() a = A() print(A.__dict__) # 私有属性在定义后隐含了一个变形动作,私有变量名:_(类名)__(属性名) print(a.__dict__) # print(a.__privateAttr) # AttributeError:'A' object has no attribute '__privateAttr' # print(a.__privateFun()) # AttributeError: 'A' object has no attribute '__privateFun' print(a.get()) # 私有属性在外部不可被调用,但并非绝对意义上的不可调用,以下方式可调用(规范上禁止调用) print(A._A__staticVar) print(a._A__privateAttr) print(a._A__privateFun())
内容总结
以上是互联网集市为您收集整理的Python之接口类,抽象类与封装之私有全部内容,希望文章能够帮你解决Python之接口类,抽象类与封装之私有所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。