VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python爬虫 >
  • Python类和构造方法

1.面向对象介绍

描述:是函数的一个变种,在Python中,有函数式编程和面向对象编程,java和C#之类只能把函数写到类里,没有函数式编程,所以只有面向对象,所以在Python中有了选择,可能就变得有点麻烦,但是在Python里,函数式编程是可以完成所有的功能的,人都是想把事情变得越来越简单,机械化,而在函数式编程中可以使用的代码量和设计比较多,而可能几行代码面向对象就可以实现
分析:

a、Python: 支持函数式,支持面向对象
b、函数式可以做所有的事,但是是否合适?
c、示例

函数实现

描述:一般情况下,使用以下函数来实现打印,但是存在一个小问题,前三个和后三个的名字、年龄、性别都是一样的,相当于各自传了三次,在文件操作的情况下,首先找到文件路径,打开文件进行操作,最后要关闭它,对于数据库,实际上也是一样的,要连接它首先知道它的服务器地址,账户密码之类的,如果以下的示例比作数据,前面的名字、年龄,性别类似于数据库的账户和密码之类的,后面的内容就是在数据的增删查改等操作,所以在这里的参数传送不太合适

类的实现:定义类和创建对象

第一个版本:函数修改成类的形式

2.函数与类的对比

a. 定义
函数:
  def + 函数名(参数)
面向对象:

 

  • class ==> 类,如bar类,bar是类名
  • def ==> 在类中有def是方法
  • 类中的方法,第一个参数要写self

 

b. 执行
函数:
  函数名(参数)
面向对象:

 

  • a.不对直接访问方法,要先创建名称 = 类名(),相当于创建一个中间人,通过它去访问里面的方法,如obj.f()调用
  • b.这个obj.f()中间人还有一个别名叫作对象,也可以叫作实例
  • c.实际是类和对象的应用

 

Summary: 使用class关键字定义一个类,类中有方法,可以没有方法,但是就没有意义,相当于写个模块里面没功能,然后创建一个对象,通过它来调用方法,而且类的方法就是函数,函数有返回值,类也有返回值

3.self是什么?

 

写函数时可以传参数,这个是形式参数,self单独说就是一个形式参数,创建类class后的操作,在内存中有一个空间,在类的空间中创建一个方法fuc,创建中间人mid1,也就是在类名后加上括号就可以,相当于在内存里再开辟一段内存空间,mid1是根据类来创建的,中间人只能去找类中的方法,所以它与类之间要有一个关联,在中间人内部有指向类,它叫做类对象指针

代码执行过程:从上到下执行,遇到类又遇到方法,把代码放到内存中,再执行中间人 = 类名(),也就是根据类名创建一个中间人,在内存中开辟新的内存空间,中间人是根据类名加了个括号,所以中间人与类之间是有关联的,再通过中间人去执行方法时,中间人就要找到对应的类,再去类中找到方法,再执行,而且可以再创建一个中间人mid2,也是在类后加一个括号,也是有关联,mid2也可以执行类中的方法

a. 字符串例子分析

b.self在类中的使用

中间人1 = 类名()代表一块内存,中间人2 = 类名()代表的是另一块内存,中间人1要执行类中的方法时,它是自己找类中的方法,而
中间人2也是找到类中同一个方法,类中有一个函数叫f(自定义),这个函数名有一个self,self是python自身传入的参数,实际情况是,
中间人1去执行类中的方法时,self就是中间人1,中间人2执行类中的方法时,self就是中间人2

c. 测试self: self代指调用方法的对象(中间人)

d.self进一步分析

描述:中间人执行类中的方法时,会把自身传过去,在类中的方法fuc中可以得到中间人,中间人中可以存放内容,中间人执行类中的方法时,可以得到中间人,所以它可以取得中间人里面的内容

z1与z封装的值不一样,都是一个中间人,共同引用类中的方法

第二个版本

第二个版本延伸到数据库使用

描述:在数据库中的增删改查的操作,在它们的内部self都有三个值可以使用,也就没必要一次性再重新给它传入参数,方法中公用的要知道,在类中的方法里,公用的字段可以封装到中间值中,如果不是公用的要传什么就传什么,把值放入到对象的过程叫封装

4.构造方法

特殊作用:
  obj = 类名()
  实现两个任务:一般情况执行方法时,是把自身内容传入,这里执行方法时,是内部定义好了,自动会执行一个方法,那个方法名固定了,在内部调用时,会把自身也传递过程
          a.创建对象
          b.通过对象执行类中的一个特殊方法
第三个版本修改

区别: 两者区别是认证调用的

init的操作使用

描述:一般在创建对象时,会把一些公用的字段都放入init方法,init方法一般用于初始化,因为创建对象时,有些是需要先创建,当执行obj = 类(),python内部会自动调用init方法来执行,如果init中没写代码,相当于没有写,所以init就是类后面加上括号,python自动执行

init的实例

实例1:

实例2:

实例3:

描述:如下人的例子,假设要每个人的血型都是0

转自:Python攻克之路-类和构造方法 - Reid21 -侵删


相关教程