与大多数其他的编程语言一样,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. MySql的事务控制(TCL语言)

    ⒈事务 一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行. ⒉事务的特性(ACID) 1.原子性(Atomicity):一个事务不可再分割,要么都执行要么都不执行. 2. ...

  2. 墨水屏 E-Paper module【转】

    转自:https://blog.csdn.net/smallmount123/article/details/77489196 https://www.digikey.com/product-deta ...

  3. ES6-Promise.all()使用

    Promise.add 方法:将多个 promise 实例,包装成一个新的 promise 实例. const p = Promise.all([p1, p2, p3]); 接受一个数组作为参数,p1 ...

  4. 022_word中如何正确的使用正则表达式进行搜索

    一.word中正则表达式详解 https://www3.ntu.edu.sg/home/ehchua/programming/howto/PowerUser_MSOffice.html 实战举例: ( ...

  5. storage和memory

    memory:使用的是值传递,默认使用的是memory,传递的是值 storage:引用传递,传过来的是指针,后面一定要加上internal,private pragma solidity ^; co ...

  6. Hadoop cloudera版和Apache(原生态)的区别

    ---------------------------------------------------------------------------------------------------- ...

  7. java 类加载机制 阿里面试题

    /** * 加载方法不等于执行方法,初始化变量则会赋值 * 类加载顺序应为 加载静态方法-初始化静态变量-执行静态代码块 * 实例化时 先加载非静态方法-实例化非静态变量-执行构造代码块-执行构造函数 ...

  8. 在js中插入html语句

    连上数据库之后,填充数据时往往需要在js中插入html语句 做法是: <body> <div class="modal-body" id="delete ...

  9. 在DIV中如何控制字的位置?

    想到实现字体在div中处于上图(右下角)的位置的话,只需在字体样式上面加上这行代码就好了:style='margin-top:120px;height:20px;float:right;text-al ...

  10. PHP之static静态变量详解

    在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料. static用法如下: 1.static 放在函数内部修饰变量 2.s ...