二十四、python的面向对象编程简介

类的定义方法

基本语法:

class 类名[(父类)]:
	属性块 #这里可以定义类中的一些属性,定义方法为:属性名=属性值
	def __init__(self[,参数]) #构造函数
		函数体
	def 方法名(self[,参数]): #可以定义类所属的其它方法
		方法体

实例: 定义Person类

class Person:
	def __init__(self,name,age,height): #这里self指的是对象,相当于其它语言中的this关键字
		self.name=name
		self.age=age
		self.height = height
	def getName(self):  #定义一个getName方法
		return self.name
类的实例化及调用类中方法等

类实例化的基本语法为:对象名 = 类名([参数])
对象的功能:

  1. 查看属性
  2. 调用方法
  3. dict()可用来修改和查询对象对应的属性值

类名的功能:

  1. 实例化
  2. 调用方法,不过自己要传递self参数
  3. 调用类中的属性,如:Person.country;也就是调用静态属性
  4. 方法一般情况下必须传self参数,且必须为第一个位置。类名可以查看类中的属性,而不需要实例化,类名还可以实例化对象。
python中的继承简介

1、面向对象的三大特性:继承、多态、封装
2、继承:继承是创建新类的一种方式,在python中,一个新建的类可以继承一个或多个父类,父类也称基类或超类,新建的类也称子类或派生类
3、python不仅支持单继承,而且还支持多继承,在python中,多继承时其继承顺序是按找广度优先的顺序来继承的(python3中均为新式类);并且在新式类中,类名.mro()方法可以查看新式类继承的优先顺序
4、单继承下,python在子类调用父类的属性和方法相关:

  1. 在子类中,通过super().__init__(父类初始化方法参数列表)这种语法调用父类的动态属性(即写在init方法中的属性)
  2. 在子类中,通过super.属性名可以调用父类中的属性(直接写在父类下的类属性,而非写在init方法下的实例对象属性)
  3. python多继承情况下访问父类中的内容相关:
        首先,在多个类均有相同的方法或属性时,python的新式类(python老版本需要显示继承object类,新版本默认继承object类)默认按照广度优先的顺序进行继承(老式类是按照深度优先继承的),即在使用super调用相关内容时,也是按照广度优先的顺序,调用相关类中的方法或属性。而如果需要使用指定的某个父类中的方法或属性,需要以类名.方法名()类名.属性名的格式来调用,并且在调用方法时需要加上self参数, 因为super关键字调用的是默认继承到的内容。
self和cls的区别

python中cls参数指的是类本身,而self指的是对象本身

python中为对象添加属性的方法
  1. 在对象创建好后,通过对象名.属性名=属性值的格式进行添加
  2. 在对象初始化函数__init__()中添加,格式为self.属性名=属性值,属性值用户可以通过构造方法的参数传入,python解释器会自动调用初始化函数,并将构造方法中传入的数据传入初始化方法中进行初始化。
  3. python中__new__()方法解析:该方法的祖先是object类提供的__new__方法,其用来创建一个对象,调用该方法时,需要传入一个参数(类型名),用来指定要创建那个类的对象,然后该方法会将创建好的对象返回。
  4. 通过反射进行添加,方法为setattr,具体参见反射。
python中的析构函数

python中的析构函数为:__del()__

python中__new__()方法的解析

该方法的祖先是object类提供的__new__方法,其用来创建一个对象,调用该方法时,需要传入一个参数(类型名),用来指定要创建那个类的对象,然后该方法会将创建好的对象返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值