1. 面向对象和面向过程的区别
(1)面向对象:“设计者”思维,更加关注的是“软件中对象之间的关系”,适合编写大规模程序。
(2)面向过程:“执行者”思维,更加关注的是“程序的逻辑流程”,适合编写小规模程序。
注:面向对象和面向过程是相辅相成的
2. 类与实例
(1)概念
类是一组变量(属性/状态)和函数(方法/行为)的封装体,拥有相同(或者类似)属性和⾏为的对象都可以抽像出⼀个类,属性(即变量)用来描述数据,方法(即函数)用来描述这些数据相关的操作。创造这样的封装体便是实例化。每个实例都拥有相同的类变量和类函数,但其变量值是各自独立的。
(2)语法格式:
class 类名:
类体
3.类与对象
从一个类创建对象时,就是⽤⼀个模板,来制造⼀个实物。每个对象会共享这个类的函数(类中定义的方法),但会有自己的变量值(不共享属性)。更具体一点:“方法代码是共享的,属性数据不共享”。
(1)实例属性
实例属性一般在__init__()方法中通过如下代码定义:
self.实例属性名 = 初始值
创建实例对象后,通过实例对象访问:
obj01 = 类名() #创建对象,调用__init__()初始化属性
obj01.实例属性名 = 值 #可以给已有属性赋值,也可以新加属性
注:定义构造函数__init__()方法。
构造方法用于执行“实例对象的初始化工作”,即对象创建后,初始化当前对象的相关属性,无返回值。
例:def __init__(self,x,y):
self.x = x #实例属性
self.y = y
注: 第一个参数固定,必须为:self。 self 指的就是刚刚创建好的实例对象。
(2)实例方法
实例方法的定义格式如下:
def 方法名(self [, 形参列表]):
函数体
实例方法的调用格式如下:
对象.方法名([实参列表])
注:调用实例方法时,不需要也不能给 self 传参。self 由解释器自动传参
(3)类属性
类属性的定义方式:
class 类名:
类变量名= 初始值
注:在类中或者类的外面,我们可以通过:“类名.类变量名”来读写。
(4)类方法
类方法的定义方式:
@classmethod
def 类方法名(cls [,形参列表]) :
函数体
注:第一个 cls 必须有;cls 指的就是“类对象”本身;参数列表中,不需要也不能给 cls 传
值。类方法中访问实例属性和实例方法会导致错误。
(5)内存分析
注:1. 类名首字母大写,多个单词之间采用驼峰原则。
2. 实例名、模块名采用小写,多个单词之间采用下划线隔开。