设为首页 收藏本站
查看: 911|回复: 0

[经验分享] Python的高级特性8:你真的了解类,对象,实例,方法吗

[复制链接]
发表于 2015-12-3 07:31:19 | 显示全部楼层 |阅读模式
  Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主。
  类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不是真正了解这一块。
  举个例子进行测试一下:



In [19]: class A():
....:     pass
....:
In [20]: a = A
In [21]: type(a)
Out[21]: classobj
In [22]: class B(object):
....:     pass
....:
In [23]: b = B
In [24]: type(b)
Out[24]: type
In [25]: c = A()
In [26]: type(c)
Out[26]: instance
In [27]: d = B()
In [28]: type(d)
Out[28]: __main__.B
  你能解释清楚a,b,c,d以及A,A(),B,B()真正代表什么吗?
  如果可以的话,下面的东西就不用看了。
  讲解的话用另一个例子吧,因为上述例子没有涉及到方法,不方便展开。



In [79]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:class A:
:       def __init__(self,name):
:               self.name = name
:       def say(self):
:               return("I am %s" % (self.name))
:   
:a1 = A
:a2 = A("alex")
:--
In [80]: dir(a1)
Out[80]: ['__doc__', '__init__', '__module__', 'say']
In [81]: dir(a2)
Out[81]: ['__doc__', '__init__', '__module__', 'name', 'say']
  在这个例子中,a1和A是一个类,self代表一个对象,a2与A("alex")代表一个实例,say()代表方法。可以看到a1这个类本身是不含name属性的,但有方法属性(ps:这里必须补充一点,如果有类属性“xx”,那么a1的属性列表里是会有“xx”的);a2是一个实例,则有name属性;self是一个对象,因为不好测量,所以很多人模糊地认为对象就是实例,其实正确说来,对象一个模板,而实例就是这个模板的具体实现,详细地说,self包含name和say()的属性和方法,而a2包含name 为 alex以及say()方法;方法的话就不用细说了,这个大家一般不会混淆。
  现在看第一个例子就会觉得豁然开朗了吧,除了一个type(A)为什么是type,这个涉及到metaclass,后续再说,不是本节重点。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146521-1-1.html 上篇帖子: python中的ord,chr函数 下篇帖子: Python之with语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表