面向对象编程(1)

面向对象编程特征:封装、继承、多态

面向对象与面向过程
面向过程:分析出解决问题的步骤,根据步骤用代码一一实现的编程方法
程序=数据结构+算法
面向对象:把解决问题的事物分解成多个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为
程序=对象+行为

类与对象
对象是实际存在的事物,对象的特征与功能组成
类是抽象的,是对一群具有相同属性和行为的事物的统称

类的定义
语法格式
class 类名:
类属性名 = 属性值;
def init(self,[变量列表]) # 类的初始化方法
self.属性名 = 默认初值 #实例属性
def 方法名(参数列表):
方法体
注意 :
类名首字母必须大写,合成词两个首字母都必须大写
类的初始化方法:为类的属性赋初值 默认参数self:表示对象
本身 变量列表:对象的属性名列表,描述事物特征
类的方法,表示一类型事物的行为

类的创建举例
class Cat(object):
def init(self) :
self.name=“小明”
self.age=3
def eat(self):
print(“这只名字叫%S的小猫喜欢吃鱼!”%(self.name))
def sleep(self):
print(“这只%S岁的小猫每天需要10小时睡眠!”
%(self.age))

对象的创建
语法格式:
对象名 = 类名([参数列表])

对象引用属性和调用方法:
对象名.属性名 #可通过赋值直接修改属性的值
对象名.方法名(实参)

初始化方法
作用:
初始化对象的属性,定义实例属性,在使用类创建对象时会自动调用,如果不显示地写构造函数,则自动添加一个空的构造函数
无参的构造方法
def init(self):
self.name=“huahua”
说明:如果是无参的构造方法,可以直接为属性赋值
有参的构造方法
def init(self,name):
self.name=name
说明:有参的构造方法,可以通过对象创建时给该对象传递一个新值

构造方法
作用:对类进行重新
定义方法:
def new(cls,参数列表):
return object.new(cls)
注意 :
cls指向为类,表示类对象
参数列表必须和init中定义的参数一样
return返回该类父对象的构造方法

构造方法与初始化方法
1._ init 完成对象的初始化操作,对象创建后立即调用, new 是构造方法,创建对象时先调用,其中必须定义返回值,参数必须和 _ init_ 中定义的参数一致
2.
_ new_ 中cls表示实例化的类,而 init 终的self就是 _new _ _中返回的实例也就是对象本身
3.init是在new的基础上完成的初始化操作

析构方法
作用:
删除一个对象来释放类所占用的资源。
方法:
def del(self):
print(“删除对象!”)

del 对象名

_ str _方法
_ str _方法是父类定义的方法,在重写时,通过定义return的值可在print(对象名)时自动调用,通常用于当对象有多个属性输出时,通过重写该方法实现代码简化

面向对象编程(1)
类方法:
1.实例方法:
定义格式:
def 方法名(self,[形参列表]):
方法体
实例方法的调用只能由类创建的对象进行调用,且实例方法中形参列表的第一个参数必须是self
2.类方法:
定义格式:
@classmethod
def 方法名(cls,[形参列表]):
方法体
类方法的调用可以通过类名和类对象来调用,但类方法的形参列表的第一个参数必须是cls,且类方法在定义时需要用@classmethod声明
3.静态方法:
定义格式:
@staticmethod
def 方法名([形参列表]):
方法体
静态方法的调用可以通过类名和类对象来调用,多个对象客共享静态方法,静态方法的形参列表没有默认参数,且类方法在定义时需要用@classmethod声明