7、python函数、对象

(一)、函数
1、嵌套函数:定义在函数内部的函数,只能函数内部使用,作用包括封装数据隐藏、减少代码重复量、闭包。
2、内部函数修改外部函数的局部变量时需先通过 nonlocal 声明,与global类似。
3、legb规则:查找变量的顺序为 local函数内部的局部变量、encloesd外部函数的局部变量、global定义在模块中的全局变量、built-in内置参数,最后还是找不到会报错。
(二)、对象
面向过程编程:怎么按流程流程步骤实现
面向对象编程:将数据和操作数据的方法封装到对象里面
python支持面向过程、面向对象等多种编程范式。
类是对方法和属性的封装,属性是用来描述数据,方法是对数据的操作,对象是类的具体实体,方法代码共享,数据属性不共享

class 类名:
		类体
class Student:
	def __init__(self,name,score):###构造函数
		self.name=name
		self.score=score
	def print_score(self):
		print('{0}的成绩为{1}'.format(self.name,self.score))
s1=Student('a',123)
s1.print_score()	

2.1、构造函数(不是必须)
必须以 __init__命名,第一个参数必须是self(指创建好的对象,可以命名为其他),实现在对象创建之后初始化当前对象的属性值即给属性赋值,通过类名(参数列表)调用,无返回值,会返回对象。__new__创建对象,无须重写,先创建对象再初始化对象。
对象包括三部分:对象的id、类型、值(属性和方法)

2.2、实例属性(不是必须):是指实例对象的属性。通过调用__init__定义,类的其他实例方法通过self.属性名 访问,对象创建后通 对象.属性名访问,通过 对象.属性名=属性值 可以新增对象的属性或修改对象的属性。

2.3、实例方法(不是必须):操作实例属性,方法定义是第一个属性必须是self,方法调用时,不需要也不能给self传参,由解释器自动传参。方法调用时 对象.方法(参数)本质解释器运行 类.方法(对象,参数),方法的实现代码都在类对象里面,实例方法指向类方法。
实例方法与函数的异同:都是实现一定功能的代码块、实例方法通过对象访问函数不需要、实例方法需要self参数,函数不需要。
2.4、dir(对象):返回对象所有的属性和方法
对象.__dict__:返回__init__定义的实例属性
pass:空语句,表示什么都不做,只是作为占位符存在
isinstance(对象,类型):判断对象是否属于该类型

2.5、类对象(不是必须):类属于type对象(模具类),执行 class 列名: 时创建

class Student:
	pass
Stu2=Student ###将类对象绑定到变量上
print(type(Stu2))
s1=Stu2()###类Student的实例对象
print(type(s1))

2.6、类属性(不是必须):从属与类的属性,所有实例对象共享。
2.7、类方法(不是必须):对类属性的操作,从属与类的方法,通过装饰器@classmethod 定义,方法的第一个参数必须类对象(cls),调用通过类名.方法(),不能也不需要对cls传值。在类方法中不能使用实例方法和实例属性(self.)。

class 类:
	@classmethod
	类方法(cls,参数列表):
		方法体

2.8、静态方法(不是必须):定义与类对象无关的方法(可以用类变量)。与模块中的普通函数没有区别,只是需要通过 类名.方法(参数列表) 进行调用。通过@staticmethod定义,不能使用实例方法和实例属性(self.)
2.9、__del__为析构方法,用于对象被销毁时的相关操作,如收回被占用资源。当对象没有被引用即引用计数为0时由垃圾回收站调用,也可以通过del 对象 删除对象来调用,这个方法无须用户自定义。
2.10、定义了__call__方法(不是必须)的对象被称为可调用对象,可以像使用函数一样调用它:实例对象(参数值) ,创建了实例对象。

class Student:
	def __init__(self,a,b):
		self.a = a
		self.b = b

	def __call__(self, a, b):
		return a+b
Stu2=Student(1,2)###调用构造方法
print(Stu2(1,2))###调用__call__方法的构造方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值