与大多数其他的编程语言一样,Python容许创建并定义面向对象的类,类可以将代码与代码处理的数据相关联。

对于更加复杂的数据,一般的列表已经不能满足需求了。

我们可以使用字典dict将数据值与键相关联。

1,使用dict来完成处理

相关处理代码如下:

#DICT

def sanitize(time_string):
if '-' in time_string:
spliter='-'
elif ':' in time_string:
spliter=':'
else:
return time_string
(mins,secs)=time_string.split(spliter)
return mins+'.'+secs def get_coach_data(filename):
james_data = {}
try:
with open(filename) as f:
data=f.readline()
temp_data=data.strip().split(',')
#f_data=[sanitize(i) for i in temp_data]
james_data = {'Name':temp_data.pop(0),'Bir':temp_data.pop(0),'Times':str(sorted([sanitize(i) for i in temp_data])[0:3])} return james_data
except IOError as Ierror:
print('read file error: '+str(Ierror))
return None james=get_coach_data('./data/james2.txt')
print(james['Name']+"'s fastest times are: "+james['Times'])

2,使用python类:

在面向对象的世界里,代码通常称为类的方法,数据通常称为类的属性。实例化数据对象通常称为实例。

#class

class Athlete(object):
def __init__(self,name,bir=None,times=[]):
self.name=name
self.bir=bir
self.times=times def top3(self):
return sorted(set([sanitize(i) for i in self.times]))[0:3] def add_time(self,a_time):
self.times.append(a_time) def add_times(self,b_time):
self.times.extend(b_time) def sanitize(time_string):
if '-' in time_string:
spliter='-'
elif ':' in time_string:
spliter=':'
else:
return time_string
(mins,secs)=time_string.split(spliter)
return mins+'.'+secs def get_coach_data(filename):
try:
with open(filename) as f:
data=f.readline()
temp_data=data.strip().split(',')
return Athlete(temp_data.pop(0),temp_data.pop(0),temp_data)
except IOError as ioerror:
print('file open fail:' + str(ioerror))
return None james=get_coach_data('./data/james2.txt')
james.add_times(['1-1','1:2'])
print(james.name+"'s fastest times are: "+str(james.top3()))

Head First Python-python面向对象的更多相关文章

  1. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  2. Python的面向对象3

    接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外 ...

  3. Python的面向对象2

    我们接着讲解Python的面向对象 1.初始化实例属性 在现实生活中,一种类型的实例会具有相同的某些属性,把这些实例划分为一个类型,则这些实例必然有相似的部分.但是,在创建实例之后,我们一个一个的为实 ...

  4. Python的面向对象1

    今天,我们来介绍Python的面向对象编程,其实面向对象并不陌生,在C++  ,Java  ,PHP中也有大量使用! 好了,我们来步入正题! 那什么是面向对象编程呢? 1. 面向对象编程是一种程序设计 ...

  5. My way to Python - Day05 - 面向对象-思维导图

    My way to Python - Day05 - 面向对象   思维导图

  6. python之面向对象2

    一.类命名空间与对象.实例的命名空间    常见一个类就会创建一个类的名称空间,用来储存类中定义的所有名字,这些名字成为类的属性  而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 ...

  7. Python进阶---面向对象的程序设计思想

    Python的面向对象 一.面向过程与面向对象的对比 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...

  8. Python之面向对象一

    引子 小游戏:人狗大战 角色:人和狗 角色属性:姓名,血量,战斗力和性别(种类) 技能:打/咬 用函数实现人打狗和狗咬人的情形 def Dog(name,blood,aggr,kind): dog = ...

  9. python基础——面向对象进阶下

    python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...

  10. python基础——面向对象进阶

    python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...

随机推荐

  1. C语言之路-2-判断

    #include<stdio.h> int main() { ; printf("请输入"); scanf("%d",&a); ){ pri ...

  2. vue之生命周期钩子函数之运用

    一.什么是生命周期钩子函数: 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运行 ...

  3. 全平台网页播放器兼容H5与Flash还带播放列表

    许久不发文了,2018年第一篇文章,写点干货--关于网页播放器的问题.嗯,实际上我是在52破解首发的,当做新人贴. 目前来说,网页播放器不少,随便找找都能找到一大堆,然而好用的就那么几个,比如ckpl ...

  4. 【原创】大数据基础之Parquet(1)简介

    http://parquet.apache.org 层次结构: file -> row groups -> column chunks -> pages(data/index/dic ...

  5. springboot ****使用经验*******

    目录 1. 返回时间格式化问题 2. springboot 中获取属性 3. SpringBoot中启动是忽略某项检测 4.  启动不开启安全校验 一返回时间格式化问题 在Spring Boot项目中 ...

  6. Java_Runtime&Process&ProcessBuilder

    目录 一.Runtime类 二.Process类 三.ProcessBuilder类 在Java中想调用外部程序,或者执行命令和可运行文件时,网上的典型实例一般都是通过Runtime.getTime( ...

  7. Django—模型

    索引 1.定义模型类 2.模型类 3.字段查询 4.查询集 5.模型类关系 6.模型类扩展 ORM简介 ORM,全拼Object-Relation Mapping,中文意为对象-关系映射,是随着面向对 ...

  8. mysql的坑

    mysql安装报错: 1.The service already exists! The current server installed: 因为mysql卸载不完全. 解决方法: C:\window ...

  9. Oracle做insert或者update时未提交事务导致表锁定解决办法

    //查看被锁定表有几个 select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$sessi ...

  10. aop切入mapper接口

    ***************************************分割线****************************************************** 参考: ...