Python程序开发基础 课件 任务1类的特殊方法-获取网页数据_第1页
Python程序开发基础 课件 任务1类的特殊方法-获取网页数据_第2页
Python程序开发基础 课件 任务1类的特殊方法-获取网页数据_第3页
Python程序开发基础 课件 任务1类的特殊方法-获取网页数据_第4页
Python程序开发基础 课件 任务1类的特殊方法-获取网页数据_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

类的特殊方法—获取网页数据任务描述写一个网页数据操作类(提示:需要用到urllib模块)。完成以下功能:(1)get_httpcode():获取网页的状态码并返回结果;例如:200,301,404等,类型为int。(2)get_htmlcontent():获取网页的内容,返回类型为str。(3)get_linknum():计算网页的链接数目。本任务要求编写程序,定义网页类page_data,分别创建get_httpcode()、get_htmlcontent()、get_linknum()方法,通过构造方法获取百度网页的数据。Python系统内置了几个特殊的方法,它们是构造方法与析构方法、类方法和静态方法。01构造方法与析构方法02静态方法与类方法03任务实现构造方法与析构方法01构造方法每个类都有一个默认的__init__()方法,即构造方法。如果定义类时显式地定义__init__()方法,那么创建对象时Python解释器会调用显式定义的__init__()方法;如果定义类时没有显式定义__init__()方法,那么Python解释器会调用默认的__init__()方法。构造方法__init__()方法按照参数的有无(self除外)可分为无参构造方法和有参构造方法。无参构造方法:无参构造方法中可以为属性设置初始值,此时使用该方法创建的所有对象都具有相同的初始值。有参构造方法:有参构造方法中可以使用参数为属性设置初始值,此时使用该方法创建的所有对象都具有不同的初始值。构造方法定义一个Information类,在该类中显式地定义一个带有3个参数的__init__()方法。classInforamtion(object):def__init__(self,name,sex):=nameself.sex=sexinfomation=Inforamtion('李婉','女')前面在类中定义的属性是类属性,可以通过对象或类进行访问;在构造方法中定义的属性是实例属性,只能通过对象进行访问。构造方法计算学生成绩。定义一个学生类,具体要求如下:1.有如下属性:姓名、年龄、成绩(语文,数学,英语),其中每科成绩的类型为整数。2.有如下方法获取学生的姓名:get_name(),返回值类型为str;获取学生的年龄:get_age(),返回值类型为int。返回3门科目中的最高分:get_course(),返回类型为int。写好类以后,定义一个学生实例进行测试。classStudnet(object):def__init__(self,name,age,score):=nameself.age=ageself.score=scoredefget_name(self):returndefget_age(self):returnself.agedefget_course(self):returnmax(self.score)zm=Studnet('Gaoyong',20,[82,96,88])print(zm.get_name())print(zm.get_age())print(zm.get_course())析构方法当一个对象的引用计数器数值为0时,就会调用__del__()方法,这个方法就是类的析构方法。importsysclassDestruction(object):def__del__(self):print('对象被释放')destruction=Destruction()print(sys.getrefcount(destruction))析构方法Python的析构方法采用的是垃圾回收机制。Python中的垃圾回收主要采用的是引用计数。引用计数是一种内存管理技术,它通过引用计数器记录所有对象的引用数量,当对象的引用计数器数值为0时,就会将该对象视为垃圾进行回收。getrefcount()函数是sys模块中用于统计对象引用数量的函数,其返回结果通常比预期的结果大1。这是因为getrefcount()函数也会统计临时对象的引用。类方法与静态方法02类方法实例方法定义时只比普通函数多一个self参数的方法称为实例方法,它只能通过类实例化的对象调用。classCar:

wheels=4

#

属性

defdrive(self):

#实例方法

print(‘开车方法')类方法与实例方法的不同点:类方法实例方法使用装饰器@classmethod修饰——类方法的第一个参数为cls,它代表类本身实例方法的第一个参数为self,它代表对象本身即可由对象调用,亦可直接由类调用只能由对象调用可以修改类属性无法修改类属性类方法定义类方法类方法可以被类名或对象名调用,其语法格式如下:类名.类方法对象名.类方法修改类属性在实例方法中无法修改类属性的值,但在类方法中可以修改类属性的值。classApple(object):count=0defadd_one(self):#实例方法

self.count=1@classmethoddefadd_two(cls):#类方法cls.count=2apple=Apple()apple.add_one()print(Apple.count)Apple.add_two()print(Apple.count)02静态方法静态方法与实例方法的不同:静态方法实例方法使用装饰器@staticmethod修饰——方法中需要以“类名.方法/属性名”的形式访问类的成员方法中需要以“self.方法/属性名”的形式访问类的成员既可由对象调用,亦可由类调用只能由对象调用定义一个包含属性num与静态方法static_method()的类Example。classExample:num=10#类属性@staticmethod#定义静态方法defstatic_method():print(f"类属性的值为:{Example.num}")print("静态方法")任务实现03获取百度网页数据#获取网页数据importurllib.requestclassPage_data(object):def__init__(self,url_add):self.url=url_adddefget_httpcode(self):status=urllib.request.urlopen(self.url).codereturnstatusdefget_htmlcontent(self):contentstr=urllib.request.urlopen(self.url).read()returncontentstrdefget_linknum(self):content=urllib.request.urlopen(self.url).read()returnlen(content.decode('utf-8').split('<ahref'))-1

A=Page_data('')print(A.get_httpcode())print(A.get_htmlcontent())print(A.get_linknum())

任务总结Python系统内置了构造方法与析构方法、类方法和静态方法。每个类都有一个默认的__init__()方法,即构造方法。__init__()方法有无参构造方法和有参构造方法之分。无参构造方法是指无参构造方法中可以为属性设置初始值,此时使用该方法创建的所有对象都具

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论