zoukankan      html  css  js  c++  java
  • 六、定制数据对象(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")

  • 相关阅读:
    css3-13 如何改变文本框的轮廓颜色
    css3-13 css3的3D动画如何实现
    poj 2565 Ants (KM+思维)
    C语言功能 --C
    jQuery简要dom操作
    最近ubuntu 14.04 cpu高入住故障排除
    spring framework 4 源代码阅读器(1) --- 事前准备
    基于Haar特征Adaboost人脸检测级联分类
    ZOJ-3652-Maze(BFS)
    设计模式
  • 原文地址:https://www.cnblogs.com/bing0818/p/4930536.html
Copyright © 2011-2022 走看看