让python飞:形象理解python面向对象、过程、名词动词提炼法、类、对象、构造函数、析构函数

在这里插入图片描述
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__

它们都是我们的汽车加工技术微型化的缩影!姚明鼓起掌来!棒棒哒!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值