社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python类和对象的入门级讲解(简单粗暴)

HULK一线技术杂谈 • 6 年前 • 605 次点击  

女主宣言

该文章转自知乎作者吉他手的一篇文章。关于类和对象的理解,相信很多初学python的同学会遇到很多烦恼,对这些抽象的感念理解不够透彻。小编在偶然间看到这篇文章后对这种简单粗暴的风格实在没有抵抗力,今天就分享给大家~ 一起来感受下这种风格带来的“视觉”冲击感。

PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!




首先,我已经假定你已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿。

由于你没有编程经验,所以无法从学过的编程语言里通过类比去理解Python的‘类和对象’。咱们用生活中的例子来说说,建房子。



类(class): 相当于施工图纸(blueprint)

对象(object):房子(已经建造好的)

假设你手上有施工图纸(Blueprint),里面有房子的所有信息(盖几层,厨房在哪,卧室在哪,怎么建)。

你已经在憧憬你以后在这个新家的生活了,买贵的家具,在厨房做好吃哒........但是呢,这些都是你的YY,你要做这些事情必须要等房子真正建好了以后才行。如果房子中途烂尾,你就啥也做不了,梦想无处安放。

所以说,‘一个建好的房子’很重要。在Python中,‘一切皆为对象’,这也是大家称之为 object oriented的意思。有了对象,咱们才能搞事情!!!


接着来:


对于建好的房子也许会稍稍不一样,每个人都有各自的喜好,就像图中看到的,可能是房子的户型一样,但是呢,颜色不一样。重点:它们都是根据‘施工图纸’造出来的。


例子结束,带着例子中想表达的‘精神’,咱进入Python来看看‘类和对象’:


用变量赋值来说:a = 2

据说按照咱一般的理解,创建一个变量命名为a,然后赋值2。相当于把2放进名叫a的篮子里,blablablabla.....

滚粗!让我们这次从另外一个角度来考虑 a = 2 这个问题,开始:



当你在Python中打出 a = 2, 然后回车。Python中有一个叫 ‘integer class’ 的玩意儿被‘唤醒’。



然后,这个integer class会跟你的要求,在执行区‘创建’一个对象,这个对象是根据integer class的施工图纸创造的。所以,这个对象(图中圆圆的东西)会有integer class的特征或者属性。(这个过程,就是你看到房子就快建好了)

还记得那个 a = 2里面的 a 吗?它要去哪里?

因为语句,a 是要等于(=)2的,因为你按了回车,哈哈

所以呢...........


a会作为一个标签,跟这个对象(圆圆的东西)挂钩。(房间建好了,可以拿钥匙住进去啦)


卧槽,老王在隔壁也买了房子!?!?  这时,又创建了一个对象(圆圆的东西)

b = 3




老王拿着钥匙住进去了,b作为标签就绑在了新建的对象上。



最后再说几点:

可以看到每次创建对象(圆圆的东西),它们的ID都是不同的。

然鹅..........如果我们把 b = 3 改成 b =2, 咦?我们不是已经有了a = 2了吗?说好的自扫门前雪呢??

这就意味着隔壁老王的魔爪要伸过来了.....

当改成 b = 2, integer class不会重新创造一个对象。而是把 b(隔壁老王)作为标签,绑在之前已经创建的那个(a = 2)的对象上。(请看下图)



最后再说俩句:在Python中,对于 a = 2 而言,不要认为是把数值2放进a的篮子里!!!!

应该是a作为标签,挂在对象(数值为2)上!!!!对象很重要!!!!就是图中那个圆圆的东西!!!!!!对象很重要!!!!

到此为止,仅仅是开了头。后面还涉及到很多关于类和对象的操作,并且每个对象里面的那个ID也很重要(涉及到method的引用,还有self的问题)

但是一旦你有了这个思路之后,编写面向对象程序的时候,简直是爽,例如:



总结

相信这篇总结能够帮助到好多初学python的同学,关于对象和类的理解能有一个深刻的认识。一句话概括python:一切皆为对象。


扫描下方
二维码
了解更多内容


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/vwzDoxpNWH
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3324
 
605 次点击