面向对象

1.面向对象的简介
python是一门面向对象的语言。
所谓的面向对象语言,就是语言中所有的操作都是通过对象来进行的。
面向过程
1.面向过程是指,我们将程序分解为一个一个的步骤,通过每个步骤的抽象来完成程序。
2.这种方法往往只适用于一个功能,如果要实现别的功能,往往复用率比较低。
3.这种方法比较适合人类的思维,编写起来比较简单。

例如:
妈妈去买鸡腿
(1)妈妈起床
(2)妈妈准备出门
(3)妈妈打了一个车
(4)去了我喜欢吃鸡腿的那个超市
(5)在超市里面买了一个鸡腿
(6)我吃到鸡腿了

这个过程就是面向过程,而最终的结果,是买到了鸡腿,而鸡腿就是对象。

面向对象
1.面向对象的编程语言,关注的是对象,而不注重过程,对于面向对象,一切皆对象。
2.以上例子,可以用妈妈买鸡腿来解决。
3.面向对象的编程思想,将所有功能统一保存到对应的对象中,要使用某个功能,直接找对应的对象即可。
4.这种编码模式容易阅读,并且易于维护,容易复用,但是编写过程中不太符合常规思维,编写相对麻烦。

类(class)

1.我们目前学习的python都是内置对象,但是内置对象并不能满足我们所有的要求,所以在开发中我们经常需要自己去定义一些对象。

2.类简单理解就是一张图纸,在程序中我们需要通过类来创建对象。

3.类是对象的图纸,我们也称对象是类的实例(instance)。

4.如果多个对象是通过一个类创建的,那么我们称这些对象为一类对象。
类创建的语法:

class MyClass([父类]):#类名需要以大驼峰的方式命名
	pass

5.类也是一个对象,类就是用来创建对象的对象。

6.既然是对象,那么就有它的三要素,‘id’,‘type’,‘value’,可以向对象中添加变量,对象中的变量称之为属性。
变量创建
对象.属性名 = ‘属性值’
例如:

class MyClass():
	pass
P1 = MyClass
P1.name = '孙悟空'

类的定义

1.类和对象都是对现实生活中事物的抽象

2.事务都包含两个部分:
数据(属性)
行为(方法)

3.调用方法
语法:
对象.方法名()

class MyClass():
	def ln(self):    #在类中创建一个方法
		print('hello')

P1 = MyClass
P1.ln()          #对象.方法名()

4.方法调用和函数调用的区别:
函数调用,有几个形参就必须要传几个实参。
方法调用,默认传递一个参数,也就是说方法中至少有一个形参。

5.在类代码块中,我们可以定义变量和函数

(1)变量会成为类实例的公共属性,所有该类的实例都可以通过对象.属性名的方法进行访问。
(2)函数会成为该类实例的公共方法,所有该类的实例都可以通过对象.方法名()访问。

参数lelf

1.属性和方法
类中定义的属性和方法都是公共的,任何该类的实例都可以进行访问。

2.属性和方法的的查找流程

当我们调用一个对象的属性时,解析器会先查找自身所在的对象中是否有该属性,如果有则返回,如果没有,则去当前类对象中寻找,有则返回,没有则报错。

3.实例对象和类对象中都可以保存属性(方法)

3.1.如果这个属性(方法)是所有实例共享的,则应该将其保存在类对象中。

3.2.如果这个属性(方法)是某个实例独有的,则应该保存到实例对象中。
3.3.一般情况下,属性是保存在实例对象中,而方法保存在类对象中。

4.参数self

4.1.self 在创建时需要定义,但在调用时,会自动传入。
4.2.self的名字并不是写死的,但最好还是按约定使用。
4.3.self总是指调用时的类的实例。
例如:

class MyClass()
	def ln(self)
		print('%s是无敌的'%self.name)
P1 = MyClass()
P1.name = '光头强'
P1.ln() #调用方法