轻松学会python面向对象第2篇---属性与方法

接上文,是什么很重要,而你最好不要强行的将编程领域的概念与现实生活中的事物相关联,那么,我们就从代码形式上入手,在缺少代码实践之前,暂且用这种笨拙但有效的方法来学习面向对象。

1. 什么属性

什么是属性?极难定义,因此,不下定义,直接上代码,我告诉你,代码里哪些是属性

class Book():
    def __init__(self, _name, _author, _price):
        self.name = _name               # 书名
        self.author = _author           # 作者
        self.price = _price             # 价格

在上面这段代码里,name, author, price就是属性,它们分别表示书的书名,作者,价格。面向对象这种编程范式,有助于我们去思考构建程序,Book这个类,可以和现实中的书建立起联系,你可能不理解类,但你还没看过书么,想一想关于书,你还能想到什么?

  1. 页数
  2. 出版日期
  3. 出版社
  4. 重量
  5. 腰封
  6. 尺寸

关于书,你可以找到很多很多与其相关的可用来描述它的词,这不都是书的属性么?你也可以把这些属性加到代码里,你写的Book类可以和我写的Book类不相同,没人规定Book类该怎么写,全凭你意愿,但你从不能在类里加一个年龄(age)的属性吧,这就扯淡了,因此我说,面向对象有助于我们思考构建代码。

2. 什么是方法

老规矩,先上代码

class Dog():
    def __init__(self, _name, _age):
        self.name = _name
        self.age = _age

    def eat_moon(self):
        print("天狗吃月")

古时候的人类,科学认知有限,月食这种事情祖先们是无法理解的,因此有天狗吃月说法。据说月食发生时,古人们就敲脸盆弄出声响,想借此将天狗吓走,当然,最后月亮还会回来的,人们便真的以为是自己吓走了天狗。

我上面定义了一个类,类的名字叫Dog,它有name和age两个属性,同时还有一个eat_moon方法。在类里面定义的函数,就不叫函数,而是叫方法。

是不是觉得很奇特,还有点别扭? 试想,全世界的教科书和媒体都把狮子改叫成老虎,把老虎改叫成狮子,那么20年后人就真的会把今天的老虎叫成狮子,他们一点都不觉得奇怪。我想强调的是,你之所以不习惯,觉得别扭,觉得奇特,是因为你还不够谦卑,你不习惯,它也这么叫,就是这么强势,爱咋地咋地。编程语言这东西不是为你设计的,不考虑你的感受。

方法,是对行为的描述,狗狗还会干什么?

  1. 吃屎
  2. 撒尿
  3. 撕床单
  4. 看家护院
  5. 发情

很多很多,你可以把这些方法写到类里啊,只要你愿意。

3. 他们有什么用

有什么用,不是你现在该去考虑的问题,学习一定是要步步为营的,属性是什么,方法是什么,是什么很重要,先解决这个问题,在去关心怎么用。知道怎么用,并不一定有助于你理解它是什么。真想知道他们有什么用,继续看我的文章。

4. 本文的瑕疵

本文在介绍属性和方法时,存在很多瑕疵,有些甚至可以说是错误,但眼下,这是我能想到的最容易理解的讲述方法,至于一些错误的认识和理解,放在以后去修正。如果一上来就给你讲最深刻的理解,百分之九十九的人就蒙了,先从简单的理解入手吧。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案