Day11姚明美国造车记
姚明来到美国打球!人生地不熟的首先要解决两个问题。第一个问题是用什么方式面对(面向:看、关注、瞅)
美国人和美国的事物(对象:个体、实体、实例、结果)
;第二个问题是用什么方式来面对美国的运作方式(面向过程:经过、经历、从头到尾)
。
第一天来到美国,准备自己做饭,用面向过程的思想来解决吧。(1.考虑今天吃什么?2.去菜场买菜;3.挑菜(货比三家、针对性砍价;4.结账走人;5.摘菜;6.洗菜;7.切菜;8.炒菜;9.焖饭;10.吃饭;11.洗刷)
结果发现这样太累了,还是用面向对象的方式来解决吧。(1.考虑今天吃什么?2.去饭店;1).调用服务员的点菜功能 2).将点菜的信息给到厨师; 3).厨师调用服务员的上菜功能; 3.开始吃饭;4.结账走人(方式很多))
,这样就方便多啦!同样,姚明先买个电脑,先去电脑城准备自己组装一台(面向过程)
,结果发现,同样太麻烦了,最后还是让助理给买了一个电脑(面向对象)
。
第一天去休斯顿火箭队报道,教练问姚明来美国还习惯吗?有什么感受啊,请谈谈你对处理小事和处理大事的理解和看法?姚明巴拉巴拉说了一通。
面向过程: 从头到尾全部参与(参与者),这程序中的体现主要是定义模块、定义类、定义函数,
以及定义其它的成员//面向对象: 先不急着去定义任何内容,
找一找有没有现有的对象存在(找对象、指挥者) .
1.如果有对象,那么就调用此对象的函数或者属性完成需求
2.如果没有对象,那么先创建对象,然后在调用对象的功能或者属性完成需求
3.如果没有对象也没有类,那么就先设计类,然后在创建对象,在完成需求)
教练对姚明的回答相当满意。教练又问姚明,对英语听得懂吗?姚明说,听得懂的!我用名词动词提炼法对英语进行分析,并向教练讲解了他昨天把一只大象关进冰箱的经过。
把大象装进冰箱
名词:大象、冰箱 类型:在python中使用关键字class来定义
表现的不清晰、不具体、模糊的
动词:装 函数:功能、行为
步骤一:设计类
class 大象
class 冰箱:
开开():
装进(大象):
关闭():
步骤二:创建对象(实例化对象) 对象:实实在在存在的个体、实体、占用内存的
表现为清晰的、具体的
dx = 大象()
bx = 冰箱()
步骤三:通过对象调用函数或者属性完成需求
bx.开开()
bx.装进(dx)
bx.关闭()
教练听完后哈哈大笑。随后两人一起去看了几集猫和老鼠。
第二天,姚明决定去买辆车。但是他的身形太大了,市面上买不到合适的。姚明决定自己造车。
遇到面向对象的问题,我们可以考虑如下三个环节(初学者)
1).侧重于设计类,定义属性、函数、...(可能需要花费大量的时间) --> 认为是面向过程的体现 。
2).创建对象(简单,一行代码搞定,但是内存比较复杂) 。3).通过对象调用属性或者函数完成需求
他先创建了一个名为大骆驼的车厂(类名起名规范:我们需要遵从驼峰命名(多个单词组成,每个单词首字母大写,其余字母都小写) 例如:HelloWorld)
,将生产的车型、颜色、大小设定好(属性:描述一类事物的特征、特点;可以理解为"静"的部分;在代码中的体现,就是定义变量)
,又给车安装了一些功能,比如说自动清洗啊,自动遮阳什么的(函数:描述一类事物的行为、功能;可以理解为"动"的部分;在代码中的体现,就是定义函数)
。建造好后赶紧让车厂生产出一台。不久,车就做好送过来了,姚明一看给气坏了,这只有车架子,都没喷漆,贴玻璃啥的(在设计类的时候,如果不显示的定义构造函数(参数无所谓),那么编辑器会自动提供了一个默认空参构造;一旦定义了,编辑器就不会再提供了。意思就是说有的类既没有属性也没有构造函数。)
姚明告诉车厂要做一辆紫色的车。不久车做好了,姚明一看,发现自己不喜欢这辆车的紫色,他想改成红色,于是就自己买了点红漆给喷上了(动态修改属性)
。喷好漆后,姚明又给车头贴了一个五星红旗图案(给对象动态添加属性:(python存在的,很多语言不支持),实例化某个对象成功后,"后天"给其单独追加一些必要的属性;以对象名.追加属性名并且赋值操作 例如:对象名.属性名 = 值)
。
喷好漆后,姚明还想再多要几辆车,但是他又不知道要什么样式的车。他把想法告诉了车厂,车厂给了他一个大大铁架子(构造函数:constructor 构造函数/构造方法/构造器)
。并告诉他,没关系,你想好后把你想要的车的样式写到铁架子上面的板子上(格式:__init__(self):)
,它就会为你生产一辆满意的车来。但是,它只能用一次(执行时机:在创建对象时被执行 【注意】一个对象只会被执行一次,何时调用由系统自行决定)
。姚明说。那如果我要生产一辆车,用完后就不需要了。咋办?车厂在车尾处加了一个斧子。说等到车完成了使命,斧子就会把车砍烂回收掉啦。
析构函数:格式:
__del__(self):执行时机:在程序结束前,将对象回收,清出内存 .【注意】由一个对象存在就会被执行一次,何时调用由系统自行决定
哈哈!姚明还有个疑问,就是别人要问我这车是什么配置啊,我只能说是红旗牌,中国造的,但其他信息我都不知道啊?这怎么办?车厂给了姚明一个名片,把它放在车的标下面。并告诉姚明你可以把车的详细信息写在名片上,如果有人问你车的信息,你就直接把车标升起来,让他看小名片!
__str__(self)函数:
作用:对象实例化之后将数据给到对象名,此时如果打印对象名,在控制台上我们看到的是整个对象的类型以及在内存中的地址(十六进制),但是我们在开发过程中,对于类型和地址并不关注;我们更希望看到的是对象的各个属性内容, 此时我们可以自己重新定义__str__(self)函数的函数体(就是函数重写), 此函数有返回值,return后面的内容必须是str类型, def __str__(self):
return '姓名为:%s,年龄为:%d,籍贯是:%s人' %(self.name,self.age,self.address)
执行时机:
在打印对象名/引用名时被触发,由系统决定何时调用
姚明说你们这些功能太强大了,我都没见过这些部件,它们就能实现我的目的。车厂告诉姚明这些制造部件叫魔术零件,
__开头并且__结尾的函数,我们称为魔术函数;
特点:
调用执行都不需要程序员关注,系统自行决定
例如:
__init__、__del__、__str__
它们都是我们的汽车加工技术微型化的缩影!姚明鼓起掌来!棒棒哒!