Python(八)-面对对象编程扩展
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python(八)-面对对象编程扩展,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2698字,纯文字阅读大概需要4分钟。
内容图文
![Python(八)-面对对象编程扩展](/upload/InfoBanner/zyjiaocheng/1215/a6ca31a1acc741159646cc260eecb7e2.jpg)
第一章 、面向对象扩展内容
1.1抽象接口
描述:创建基类,即抽象接口是为了来实现一个程序的架子,完成一系列的功能,然后具体的内容让子类来完成,如果不能完成,那么在调用的时候会直接报错。
作用:一般用来构建程序的一些架子,然后进行多人协作开发。
实践:
python2
# /usr/bin/env python # -*- encodeing:utf-8 -*- import abc #模块必须掉入class Alert(object): #创建一个基类__metaclass__ = abc.ABCMeta #语法 @abc.abstractmethod #装饰下面的方法为抽象方法def send(self): #需要实现方法passclass MailAlert(Alert): #子类继承基类pass#如果不实现 m = MailAlert() #python2中在实例化中就会报异常m.send 错报信息: Traceback (most recent call last): File "抽象类_python2.py", line 12, in <module> m = MailAlert() TypeError: Can‘t instantiate abstract class MailAlert with abstract methods send
python3
# /usr/bin/env python3 class Alert(object): def send(self): raise NotImplementedError #给这个send方法添加一个报错信息。class MailAlert(Alert): pass m = MailAlert() m.send() 报错信息: Traceback (most recent call last): File "/Users/chenxin/s15/day8/抽象类_python3.py", line 12, in <module> m.send() File "/Users/chenxin/s15/day8/抽象类_python3.py", line 6, in send raise NotImplementedError #给这个send方法添加一个报错信息。 NotImplementedError
1.2 静态方法
描 述:静态方法不用实例化就可以调用,直接用类名像调用变量一样,静态方法就是已经和类没什么关系了,唯一的关系就是使用类名进行调用它。
作 用:每一次实例化都会开辟一块内存空间,有内存的开销,如果有上万的实例,就会耗费大量的实例,就要思考要不要用这个静态方法,进行剩内存空间。
使用方法:在类中的方法上进行@staticmethod的装饰器。
特 点:静态方法既不能访问公有属性,也不能访问实例属性。
实 例:
class cc(object): def __init__ (self,name): self.name = name @staticmethod def ect(name,food): print(‘%s is eating ..%s.‘%(name,food)) p= cc(‘陈鑫‘) p.ect(‘chenxin‘,‘鸡腿‘) 结果: chenxin is eating ..鸡腿.
1.3 类方法
描 述:在类方法来讲,它就不知道实例的存在
作 用:
使用方法:在类中的方法上进行@classmethod的装饰器。
特 点:只能访问类的公有属性,不能访问实例属性
实 例:
class cc(object): name = ‘晶晶‘def__init__(self,name): self.name = name @classmethod def walk(self): print(‘%s is walking/....‘ %self.name) p= cc(‘陈鑫‘) p.walk() 结果: 晶晶 is walking/....
1.4 属性方法
描 述:
作 用:把一个方法变成一个静态属性,就是变成一个变量,此时给人感知是访问的一个变量,其实访问的是一个方法。
使用方法:在类中的方法上进行@propery的装饰器,如果修改的方法是在创建一个相同名字的方法,在上装饰@属性方法.settr,删除为@属性方法.deleter
特 点:这样就如果带括号,就是调用的下面方法,如果不带括号就是调用的属性方法。
实 例:
class cc(object): def __init__ (self,name): self.name = name @property #属性方法,的作用是吧一个方法变成一个静态属性,就是变成一个变量。此时你访问的是一个变量,其实访问的是一个方法。def talk(self): print(‘%s says ‘%(self.name)) @talk.setter def talk(self,msg): print(‘set msg:‘,msg) @talk.deleter def talk(self): print(‘deleter talk‘) 调用: p = cc(‘chenxin‘) p.talk p.talk = ‘jjj‘del p.talk 结果: chenxin says set msg: jjj deleter talk
第二章 、面向对象更多方法
1.1 __doc__
描 述:显示方法的描述信息
实 例:
def testfun(): """ this function do nothing , just demostrate the use of the doc string . """ pass print(testfun.__doc__)
1.2 __module__
描 述:以字符串的形式显示模块与import结合使用
1.3 __import__
描 述:以字符串的形式导入模块
1.4 __call__
描述:
1.5 __dict__
描 述:查看类或对象中所有成员
1.6 __metaclass__
描 述:自定义整个类的实例化的过程。
1.7 type()
描 述:动态创建类,所有的类底层都是type创建的。
原文:http://www.cnblogs.com/cxcx/p/6137150.html
内容总结
以上是互联网集市为您收集整理的Python(八)-面对对象编程扩展全部内容,希望文章能够帮你解决Python(八)-面对对象编程扩展所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。