接上文,是什么很重要,而你最好不要强行的将编程领域的概念与现实生活中的事物相关联,那么,我们就从代码形式上入手,在缺少代码实践之前,暂且用这种笨拙但有效的方法来学习面向对象。
什么是属性?极难定义,因此,不下定义,直接上代码,我告诉你,代码里哪些是属性
class Book():
def __init__(self, _name, _author, _price):
self.name = _name # 书名
self.author = _author # 作者
self.price = _price # 价格
在上面这段代码里,name, author, price就是属性,它们分别表示书的书名,作者,价格。面向对象这种编程范式,有助于我们去思考构建程序,Book这个类,可以和现实中的书建立起联系,你可能不理解类,但你还没看过书么,想一想关于书,你还能想到什么?
关于书,你可以找到很多很多与其相关的可用来描述它的词,这不都是书的属性么?你也可以把这些属性加到代码里,你写的Book类可以和我写的Book类不相同,没人规定Book类该怎么写,全凭你意愿,但你从不能在类里加一个年龄(age)的属性吧,这就扯淡了,因此我说,面向对象有助于我们思考构建代码。
老规矩,先上代码
class Dog():
def __init__(self, _name, _age):
self.name = _name
self.age = _age
def eat_moon(self):
print("天狗吃月")
古时候的人类,科学认知有限,月食这种事情祖先们是无法理解的,因此有天狗吃月说法。据说月食发生时,古人们就敲脸盆弄出声响,想借此将天狗吓走,当然,最后月亮还会回来的,人们便真的以为是自己吓走了天狗。
我上面定义了一个类,类的名字叫Dog,它有name和age两个属性,同时还有一个eat_moon方法。在类里面定义的函数,就不叫函数,而是叫方法。
是不是觉得很奇特,还有点别扭? 试想,全世界的教科书和媒体都把狮子改叫成老虎,把老虎改叫成狮子,那么20年后人就真的会把今天的老虎叫成狮子,他们一点都不觉得奇怪。我想强调的是,你之所以不习惯,觉得别扭,觉得奇特,是因为你还不够谦卑,你不习惯,它也这么叫,就是这么强势,爱咋地咋地。编程语言这东西不是为你设计的,不考虑你的感受。
方法,是对行为的描述,狗狗还会干什么?
很多很多,你可以把这些方法写到类里啊,只要你愿意。
有什么用,不是你现在该去考虑的问题,学习一定是要步步为营的,属性是什么,方法是什么,是什么很重要,先解决这个问题,在去关心怎么用。知道怎么用,并不一定有助于你理解它是什么。真想知道他们有什么用,继续看我的文章。
本文在介绍属性和方法时,存在很多瑕疵,有些甚至可以说是错误,但眼下,这是我能想到的最容易理解的讲述方法,至于一些错误的认识和理解,放在以后去修正。如果一上来就给你讲最深刻的理解,百分之九十九的人就蒙了,先从简单的理解入手吧。
QQ交流群: 211426309