python基础第七节

嵌套函数

在函数内部定义的函数,也叫内部函数

调用嵌套函数。在外部函数里面使用,在外部函数外部不能使用

什么情况下用嵌套函数:

封装-数据隐藏,。嵌套函数让我们在函数内部避免重复代码

nonlocal关键字

用来声明外层函数的局部变量

LEGB规则

python在查找名称时按照这个规则来查找

Local -》Enclosed->Global->Built in 

local 函数或者类的方法内部

enclosed 嵌套函数(一个函数包裹另一个函数,闭包)

global 模块中的全局变量

Built in Python为自己保留的特殊名称

如果在这些所有命名空间中都没有找到会产生一个NameError

面向对象编程

继承 多态 封装

面向对象和面向过程

都是解决问题的思维方式,都是代码组织的方式

解决简单问题可以使用面向过程

解决复杂问题宏观上使用面向对象把握,微观上是面向过程

类和对象 

对象的结构:方法和属性

属性需要定义在一个特殊的方法里面:构造方法  __init__(self)  self 当前对象本身

类内的方法,self必须位于第一个参数

构造函数__init__() 实例对象的初始化工作

通常用来初始化实例对象的实例属性

通过类名(参数列表)来调用构造函数

class Student:
    def __init__(self,name,score):
        self.name = name
        self.score = score

s1 = Student("张三",18)

__init__()给实例属性赋值

__new__() 无需定义,创建对象

实例属性

从属于实例对象的属性,实例变量

self.实例属性名= 初始值

可以给对象新加属性并赋值,该属性不在构造函数里面 ,只是对这一个对象起作用 

实例方法

实例方法是从属于实例对象的方法,第一个参数必须为self,self指的是当前的实例对象,调用实例对象时不需要给self传参,解释器自动传参。

a = Student()

a.say_score()   解释器翻译: Student.say_score(a)

dir(obj) 可以获得该对象所有属性和方法

obj.__dic__ 对象的属性字典

pass 空语句

isinstance(对象,类型) 判断对象是不是指定类型。

类对象

当解释器执行class语句时,就会创建一个类对象

类的信息也是需要一个对象来保存的

类也是对象可以赋值  Stu2 = Student

类属性

类属性是从属于类对象的属性,也成为类变量,可以被所有实例对象共享

类变量名= 初始值

类方法

类方法是从属于类对象的方法,通过装饰器@classmethod来定义,修饰类的方法

@classmethod

def 类方法名(cls[,形参列表】)

调用类方法格式:类名。类方法名(参数列表) 参数列表中不需要给cls传值

类方法中访问实例属性和实例方法会导致错误,子类继承父类方法时,传入cls是子类对象,而非父类对象

class Student:
    company = "yzy"
   
    @classmethod
    def printCompany(cls):
        print(cls.company)
Student.printCompany() #类方法

静态方法

与类对象无关的方法

通过类名来访问,实际和类没什么关系,和放在模块中的方法一样。

通过装饰器@staticmethod来定义

调用方式:类名.静态方法名(参数列表)

静态方法中访问实例属性和实例方法会导致错误

__del__析构方法 垃圾回收

实现对象被销毁时所需的操作,

python自动实现垃圾回收,对象没有被引用时,垃圾回收器调用__del__方法

可以通过del语句删除对象,从而保证调用__del__方法

系统会自动提供该方法,一般不需要自定义析构方法

__call__方法和可调用对象

定义了__call__方法的对象,称为可调用对象,可以像函数一样被调用

a = 30 b = 50 c = a + b d = a.__add__(b)

class SalaryAccount:
    
    def __call__(self, salary):
        print(xxxxx)

s = SalaryAccount()
print(s(3000)) #可以调用对象s,调用该对象的__call__方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值