六、定制数据对象(Python的面向对象) ----- 打包代码与数据

  • 创建Python字典

python字典即为键值对,相当于Java中的map,其创建的两种形式:

a = {}     # 普通方式
b = dict()  # 使用工厂函数
  • 字典的赋值与访问
#创建字典
>>> cleese[‘Name‘] = ‘John Cleese‘
>>> cleese[‘Occupations‘] = [‘actor‘,‘comedian‘,‘writer‘,‘film producer‘]
>>> palin = {‘Name‘:‘Michael Palin‘,‘Occupations‘:[‘comedian‘,‘actor‘,‘writer‘,‘tv‘]}

#访问
>>>palin[‘Name‘]
‘Michel Palin‘
>>>cleese[‘Occupations‘][-1]  #使用数字来访问存储在一个特定字典键位置上的列表项。可以把这认为是‘索引串链’,从右向左读作:“……与Occupations关联的列表的最后一项……”
  • 关于字典,重点是它会维护关联关系,而不是顺序!
  • Python的面向对象:定义一个类
class Athlete:                        #Python中没有new关键字,可以用__init__()方法定制对象的初始化状态
    def __init__(self):
        #初始化对象的代码放这里

a = Athlete()   #创建对象实例
  • init()方法中 self参数的重要性

在处理 a = Athlete() 这行代码时,Python会转化为如下调用: Athlete().__init__(a) , 此时a对应 __init__(self)中的self,此时Python解释器就会知道方法调用要应用到哪个对象实例。

  • 每个方法的第一个参数都是self

Python要求每个方法的第一个参数为调用对象实例,即每个方法的第一个参数都必须是self

示例代码:

class Athlete:
    def __init__(self,a_name,a_dob=None,a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.times = a_times

    def top3(self):           #第5章最后一题,返回3个最快时间,别忘了这里的self参数
        return(sorted(set([sanitize(t) for t in self.times]))[0:3])

def get_coach(filename):
    try:
        with open(filename) as f:
            data = f.readline()
        templ = data.strip().split(‘,‘)
        return(Athlete(templ.pop(0),templ.pop(0)),templ)
    except IOError as ioerr:
        print(‘File error: ‘ + str(ioerr))
        return(None)

james = get_coach_data(‘james2.txt‘)
print(james.name + "‘s fastest times are: " + str(james.top3())) #调用top3()方法,将结果显示在屏幕上之前,先把结果转换为一个字符串
  • 继承Python内置的list --- 如何继承Python的内置类
class NamedList(list):       #创建一个NamedList类,新类将继承list类
    def __init__(self,a_name):
        list.__init__([])    #初始化所派生的类,然后把参数赋至属性
        self.name = a_name

这样NamedList就可以使用list的内置方法了  如 NamedList().append("xxx")

时间: 2024-10-12 19:22:36

六、定制数据对象(Python的面向对象) ----- 打包代码与数据的相关文章

[Head First Python]6. 定制数据对象:打包代码与数据

相同功能,演进实现 数据文件 sarah2.txt sarah Sweeney,2002-6-17,2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55 1- 返回dict return({'Name':data_list.pop(0), 'DOB':data_list.pop(0), 'Time':str( sorted( set([sanitize(t) for t in data_list] ) )[0:3])}) 1 def sanitize(time

Python自动化 【第六篇】:Python基础-面向对象

  目录: 面向过程VS面向对象 面向对象编程介绍 为什么要用面向对象进行开发 面向对象的特性:封装.继承.多态 面向过程 VS 面向对象 面向过程编程(Procedural Programming) 面向过程编程依赖一个procedure包含一组要被进行计算的步骤, 面向过程又被称为top-down languages, 就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 .基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再

python抓取数据,python使用socks代理抓取数据

在python中,正常的抓取数据直接使用urllib2 这个模块: import urllib2 url = 'http://fanyi.baidu.com/' stream = urllib2.urlopen(url) cont = stream.read() print cont 如果要走http代理的话,我们也可以使用urllib2,不需要引用别的模块: import urllib2 url = 'https://clients5.google.com/pagead/drt/dn/dn.j

Python得到前面12个月的数据,Python得到现在时间 前一年的数据,

#Python 实现得到现在时间12个月前的每个月 # 假设现在的时间是2016年9月25日 #得到现在的时间 得到now等于2016年9月25日 now = datetime.datetime.now() #得到今年的的时间 (年份) 得到的today_year等于2016年 today_year = now.year #今年的时间减去1,得到去年的时间.last_year等于2015 last_year = int(now.year) -1 #得到今年的每个月的时间.today_year_m

数据对象如何定义为Java代码示例

想将数据保存为这样子: [{ "subject": { "code": "B123", "words": [{ "key": "gjc1", "wight": 9.8, "ct": 1575126920 }, { "key": "gjc1", "wight": 9.8, "ct&

JAVA笔记:Java数据库编程(四):处理大数据对象

大数据对象主要指的是CLOB和BLOB两种类型的字段,在CLOB中可以存储海量文字,例如存储一本小说.在BLOB中可以存储二进制文件,如电影,图片等,如果在程序中要处理大的数据对象,则必须使用PreparedStatement 完成,所有的内容要通过IO流的方式从大字段文本中保存和读取. 写入大数据对象的主要方法: 读取大数据对象的主要方法: 处理CLOB数据 CLOB表示大文本数据(Character Large Object),在MySQL中提供了LONGTEXT字段表示大文本数据,这个字段

数据挖掘:数据(数据对象与属性类型)

一.概述 现实中的数据一般有噪声.数量庞大并且可能来自异种数据源. 数据集由数据对象组成,一个数据对象代表一个实体. 数据对象:又称样本.实例.数据点或对象. 数据对象以数据元组的形式存放在数据库中,数据库的行对应于数据对象,列对应于属性. 属性是一个数据字段,表示数据对象的特征,在文献中,属性.维度(dimension).特征(feature).变量(variance)可以互换的使用. "维",一般用在数据仓库中. "特征",一般用在机器学习中. "变量

Head Frist Python 读书笔记 第六章 定制数据对象

Bullet Points: 定义Class python中的class和JavaScript中的类似(后悔没有认真看JS),原则只有一个“方法是共享的,而属性不共享” class AthleteList: def __init__(self,a_name,a_dob=None,a_times=[]): self.name=a_name self.dob=a_dob self.times=a_times def top3(self): return sorted(set([float(sanit

【Python】[07]定制数据对象

这章主要学习数据字典和类. 字典 python中字典的定义为:一个内置的数据结构(内置于python中),允许将数据与键而不是数字关联.这样可以使内存中的数据与实际数据的结构保持一致. 创建空字典的方式: 1.使用大括号来创建一个空字典,如:cleese={} 2.使用dic()工厂函数来创建空字典,如:cleese=dic() 通过将值与键关联,可以向空字典中增加数据,这两种方法向字典添加数据的区别是: 第一种创建方式可以分步向空字典中添加数据 cleese["Name"]=&quo