Spring aware接口的作用是什么
237
2022-08-27
Python ❀ 面对对象(一)(python怎么读)
Python学习计划(九)
面对对象(一)
一、面向对象思想 张老师吃饭,饭从哪里来? (1)自己做
买菜洗菜切菜做饭(2)女朋友做女朋友.买菜女朋友.洗菜女朋友.切菜女朋友.做饭
面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照指向的逻辑顺序组织在一起,数据与函数分开考虑。
面向过程:根据业务逻辑从上到下写代码。查询是执行者面向对象:将数据与函数绑定到一起,进行封装,对外界提供调用。程序员是指挥者
面向对象的思维解决问题的重点: (1)当遇到一个需求的时候不用自己取实现,如果自己一步步实现那就是面向过程 (2)应该找一个专门做这个事的人来做 (3)面向对象是基于面向过程的
二、类与对象 面向对象编程的两个非常重要的概念:类和对象 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提供了另外一个新的概念—类 类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象。
1、类 类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在,这个存在就是对象,一个类可以找到多个对象
2、对象 某一个具体事物的存在,在现实世界中可以是看得见摸得着的 可以是直接使用的
3、类与对象的关系: 类就是创建对象的模板
4、类的组成: 类的名称:类名 类的属性:一组数据 类的方法:允许操作的方法(行为)
5、类的抽取: 如何把日常生活中的十五抽象成抽象中的类? 拥有相同或者类似的属性和行为的对象都可以抽象出一个类 一般名词都是类
三、定义类 定义一个类,格式如下:
class 类名: 方法列表
四、创建对象 定义了一个car类,就好比车有一个图纸,那么接下来就应该把图hi交给生成工人们去生成了 pyhon中,可以根据已经定义的类去创建出一个个对象 创建对象的格式为:
对项目=类名()
例如:
BMW=Car0BMW.color = '黑色'BMW.wheelNum = 4BMW.move()BMW.toot()print(BMW.color)print(BMW.wheelNum)
注意:
BMW = Car(),这样就产生了一个Car的实例对象,此时也可以通过实例对象BMW来访问属性或者方法第一次使用BMW.color = '黑色’表示给BMW这个对象添加属性,如果后面再次出现BMW.color = xxx表示对属性进行修改BMW是一个对象,它拥有属性(数据)和方法(函数)
五、init()函数 在上一小节的demo中,我们已经给BMW这个对象添加了2个属性,wheelNum(车的轮胎数量)以及color(车的颜色),试想如果再次给创建一个对象的话,肯定也需要进行添加属性,显然这样做很费事,那么有没有办法能够在创建对象的时候,就顺便把车这个对象的属性给设置呢? 通过_init_()函数为对象初始化属性值
#定义汽车类
class Car: def _init_(self): self.wheelNum = 4 self.color = '蓝色' def move(self): print('车在跑,目标:夏威夷')
#创建对象
BMW = Car()print('车的颜色为:%s'%BMW.color)print('车轮胎数量为:%d'%BMW.wheelNum)
当创建Car对象后,在没有调用_init_()方法的前提下,BMW就默认拥有了2个属性wheelNum和color,原因就是_init_()方法是在创建对象后,就立刻被默认调用了(为对象属性进行初始化赋值)。 这种对象的属性进行赋值的行为称之为默认初始化 这样子每个对象创建处理,属性值都一样,不能体现多样性,能不能再创建对象的同时对对象属性进行赋值呢?
def _init_(self,newWheelNum,newColor): self.wheelNum = newWheelNum self.color = newColor
这种对象的属性进行赋值的行为称之为针对性初始化
init(self)方法,在创建一个对象时默认调用,不需要手动调用init(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么_init_(self)中除了self作为一个形参外还需要2个形参init(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去
六、str()函数 当我们通过print()函数将对象进行打印时,打印的是该对象的类型和地址。 如果想打印对象时,出来的是对象的一些属性值,怎么办呢?
def _str_(self): msg = '嘿' return msg
当使用print输出对象的时候,只要自己定义了_str_(self)方法,那么就会打印从在这个方法中return的数据
七、self关键字 所谓的self,可以理解为自己 可以把self当作C++中类里面的this指针一样理解,就是对象自身意思 某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可
八、面向对象的应用案例 烤土豆应用: 示例属性如下:
cookedLevel:这是数字;0-3表示还是省的,超过3表示半生不熟,超过5表示已经烤好了,超过8表示已经烤成木炭了!我们的地瓜开始是生的cookedString:这是字符串;描述地瓜的生熟程度condiments:这是地瓜的配料列表,比如番茄酱、芥末酱等示例方法如下:cook():八地瓜烤一段时间addCondiments():给地瓜添加配料init():设置默认的属性str():让print的结果看起来更好一点
九、隐藏数据 如果有一个对象,当需要却对其进行修改属性时,有2中方法
对象名.属性名 = 数据 ----> 直接修改对象名.方法名() ----> 间接修改为了更好的保存属性安全,即不能随便修改,一般的处理方式为将属性定义为私有属性添加一个可以调用的方法,供调用
class people(object): def _init_(self,name): self._name = name def getName(self): return self._name def setName(self,newName): if len(newName) >= 5: self._name = newName else: print('error:名字疮毒需要大于或者等于5')xiaoming = people('HENG')print(xiaoming._name)
python中没有像java中public和private这些关键字来区别公有熟悉和私有属性 它是以属性命名方式来区分,如果在属性名前面加了2个下划线,则表没该属性是私有属性,否则为公有属性。
十、del()函数 创建对象后,python解释器默认调用_init_()方法 当删除一个对象十,python解释器也会默认调用一个方法,这个方法为_del_()方法
当有1个变量保存了对象的引用时,此对象的引用技术就会加1当使用del删除变量指向的对象时,如果对象的引用技术不是1,比如3,呢么此时只会让这个引用技术减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除
创作者:Eric· Charles
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~