【面向对象的基本介绍】
面向过程编程最最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织中一起,数据与函数分开考虑;
《小总结》面向对象和面向过程都是解决为题的一种思路,面向对象是基于面向过程的,一般情况下我们是用面向对象的思维解决问题的,这种解决问题的思路我们就叫做面向过程,
《举列吃鸭子》面向过程:1、养鸭子2、鸭子成长3、杀鸭子4、清理鸭子,准备佐料5、烹饪、6、吃鸭子
面向对象:1、找一个卖鸭子的2、交易给钱3、迟到鸭子
【类和对象】面向对象编程的2个非常重要的概念,“类和对象”;
面向对象的编程核心就是对象,在面向对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类
《类》俗话说人以类聚,物以群分。具有相似内部状态和运动规律的实体集合(或统称为抽象),具有相同属性和行为事务的统称,类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在,一个类可以找多个对象
《对象》可以直接使用,在现实世界可以看得见摸得着的,某一个具体事务的存在;
《小测试》我们现在来练习一下如何区分类和对象
(1)汽车?(类):因为这是一个很模糊的说法,就像大众是汽车,宝马也是汽车。但是它们并不一样;
(2)大众汽车?(也是类):因为大众汽车也有很多其他的划分,比如桑塔纳……
(3)我的大众桑塔纳?(对象):这个就是对象,因为现在有了具体的人和物,我和车,或者是你和我;这就是一个对象
【定义类】现在我们已经大概的了解到了类和对象,那么我们现在来试试定义一个类;
首先我们要知道类的命名规则:在我们定义类的时候我们最好使用大驼峰命名规则
《class 类名:类的下面写属于当前类的属性》
类(Class) 由3个部分构成1、类的名称:类名2、类的属性:一组数据3、类的方法:允许对进行操作的方法
《写完属性,那么我们接下来要添加方法也就是行为(如上图)《但是我们这样写了之后,会显得非常的局限,因为并不是每个人都叫张三,也不是每个人都只到12岁;》(所以我们要使用一些python的魔法方法)》
《这样我们就可以随时写入新的数据:第一步:创建类,第二步:声明函数,第三步:声明要打印的数据,第四步:创建一个函数,调用实列化对象》
【魔法方法的介绍】
【魔法方法__init__】
__init__()方法:可以用此方法来定义一个对象的初始化操作;
【魔法方法__new__】
__new__ ()方法:init()方法很容易被认为是在实例化对象时调用的第一个方法,其实不是,当我们实例化一个对象的时候,例如class1=MyClass(1, 2),第一个被调用的是__new__()方法,而后再调用__init__()方法,并把一些参数传给__init__()方法,new()方法才是真正地创建了实例化对象,init()方法只是给这个对象进行了初始化操作。
【魔法方法__str__】
str & repr: str()方法定义当被print()方法或者str()方法调用时的行为,repr()方法定义当被print()方法或者repr()方法调用时的行为,一般来说,它们的功能都是实现类到字符串的转化,实现方式上也没有特别的差异。 但实际上,str()方法的返回结果可读性应该要更强一些,repr()方法的返回结果要更加准确,也就是说,str()方法的意义是得到便于人们阅读的信息,而__repr__()方法的目的在于开发者便于调试;
【魔法方法__del__】
del() 方法:当一个对象的生命周期结束被彻底销毁的时候被调,__del__方法会被调用,不常用,一般不需要进行重写;
call()方法:可以让类的实例像函数一样被调用;
iter()方法:如果我们希望一个实例化对象是一个迭代器,可被用于for…in循环遍历,这时我们需要在类中定义__iter__()方法和__next__()方法,iter()方法返回一个迭代对象,next()返回迭代器的下一个元素,这个在之前的文章有说过:迭代器Iterator的实现,这里就不展开了;
【创建对象】:python中,可以根据已经定义的类去创建出一个或多个对象,创建对象的格式:
《实列化对象》:对象名1 = 类名();
《当创建一个对象时,就好比是用一个模子来制造一个实物》
【添加获取对象的属性】
【在方法内通过self获取对象属性】