3799-李同学-人工智能学科-自然语言处理方向 扫二维码继续学习 二维码时效为半小时

(0评价)
价格: 免费

私有方法

在类内部调用自己的属性或方法,直接用self.__属性。

 

[展开全文]

私有属性和私有方法(实现方法)

1、通常我们约定,两个下划线开头的属性是私有的,其他为公共属性;

2、类内部可以直接访问私有属性(方法);

3、类外部不能直接访问私有属性(方法);

4、类外部可以通过“__类名__私有属性(方法)名”访问私有属性(方法)

 

[展开全文]

方法没有重载

在其他语言,可以定义多个重名的方法,只要保证方法签名——形参列表,唯一即可。但在python里面,方法的参数没有声明类型,参数的数量也可以由可变参数控制

所以,不要使用重名的方法,定义了多个同名函数之后,只有最后一个函数可以被识别调用。

方法的动态性

python是动态语言,我们可以动态得为类添加新方法,或者动态修改类已有的方法

 

[展开全文]

__call__方法和可调用对象:
定义了__call__方法的对象,称为“可调用对象”,即该对象可以像函数一样被调用

 

 

[展开全文]

__del__方法(析构对象)和垃圾回收机制

用于实现对象被销毁时所需的操作,比如:释放对象占用的空间——打开的文件资源、网络链接

python实自动的垃圾回收,当对象没有被引用时(引用计数为0),由垃圾回收期调用__del__方法

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

 

[展开全文]

类方法:

类方法是从属于“类对象”的方法,类方法通过装饰器@classmethod来定义,格式如下:
 @calssmethod

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

       函数体

 

要点如下:

(1) @calssmethod必须位于方法第上面一行;

(2)第一个cls必须有,cls指的就是“类对象”本身;

(3)调用类方法格式有:“类名.类方法名(参数列表)”,参数列表里,不需要也不能给cls传值

(4)类方法中访问实例属性和实例方法会导致错误

(5)子类继承父类方法时,传入cls是子类对象,为非父类对象

 

静态方法:

要通过@staticmethod来定义,格式如下:
 

@staticmethod

def  静态方法名[形参列表]:
       函数体


将静态方法放到了类里面,需要通过类调用。

 

 

[展开全文]

类属性和类方法

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

类属性的测试

 

 

[展开全文]

类对象

class 类名:  

[展开全文]

实例方法:

实例方法是从属于实例对象的方法,实例方法的定义格式如下:

def  方法名(self,[, 形参列表]):

      函数体

要点:
(1)定义实例方法时,第一个参数必须为self,和前面一样,self指当前的实例对象;

(2)调用实例方法时,不需要也不能给self传参。self由解释器自动传参。

 

实例对象的方法调用本质:
a.say_score()  解释器翻译: Student.say_score(a)

函数和方法的联系与区别:

(1)都是用来完成一个功能的语句块,本质上是一样的;

(2)方法调用的时候,通过对象来调用。方法从属于特定实例对象,普通函数没有这个特点;

(3)直观上看,方法定义时需要传递self,函数不需要

 

其他操作:

(1)dir(object)可以获得object的所有属性

(2)object.__dict__可以获得属性字典

(3)pass空语句,定义了一个类,但暂时没想好要写什么,就用pass

(4)isinstance(object,class),判断对象是不是类里面的一个对象

[展开全文]

实例属性

从属于实例对象的属性,也称为”实例变量“

 

[展开全文]

构造函数__init__()

__new__()方法:用来创建对象,但我们一般无需重定义该方法

__init__()方法:初始化创建好的归降,初始化指的是:给实例属性赋值

 

python对象包含三个部分:id、type、value(对象的值,包括属性和方法)

 

__init__()要点如下:

(1)名称固定,必须为:__init__()

(2)第一个参数固定,必须为self,self指的就是刚刚创建好的实例对象

(3)构造哈桑农户通常用来初始化实例对象的实例属性

[展开全文]

类的定义

把对象比作一个”饼干“,类是制造这些饼干的”模具“。在python里面,类也是一种对象 

 

类的结构

方法(函数)——>行为

属性(变量)——>状态

 

对象的结构

对象产生于类,同类的对象方法和属性一致

属性是一样的,但属性的值不一样

 

[展开全文]

对象的进化:

随着编程面临的问题越来越复杂,编程语言本身也在进化

1、简单数据

2、数组:把同类型的数据放在一起

3、结构体:将不同类型的数据放在一起,是c语言中的数据结构

4、对象:将不同类型的数据、方法(函数)放在一起,就是对象;把数据和处理方法放在一起。

 

[展开全文]

面向对象编程

python支持面向过程、面向对象、函数式编程等多种编程范式

python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能:继承、多态、封装

面向对象编程时将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,从而大大提高了编程的效率

 

面向过程(procedure oriented)思维

面向过程编程更加关注”程序的逻辑流程“,是一种”执行者“思维,适合小规模的程序

面向对象思考方式:

遇到复杂问题是,先从问题中找名词,面向过程更多是找动词

 

面向对象和面向过程的总结:

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

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

(3)解决复杂问题:宏观上使用面向对象把我,微观处理上仍然是面向过程

 

[展开全文]

LEGB规则

在python里面查找名称的时候,按照LEGB规则查找的;local—>Enclosed—>Global—>Built in 

local   指的是函数或者类的方法内部

enclosed 指的是嵌套函数(一个函数包裹另一个函数)

Global  指的是模块中的全局变量

Built in  指的是python为自己保留的特殊名称

 

 

[展开全文]

nonlocal:用来声明外层的局部变量

global:用来声明全局变量

 

[展开全文]

嵌套函数(内部函数)

在函数内部定义的函数

优点:
(1)封装——数据隐藏

(2)避免重复代码

[展开全文]

浅拷贝和深拷贝

copy(浅拷贝):不拷贝子对象的内容,只拷贝对象的引用;

deepcopy(深拷贝):会连子对象的内存都全部拷贝一份

[展开全文]

函数也是对象,内存底层分析:

 

[展开全文]

递归函数计算阶乘

 

[展开全文]