zoukankan      html  css  js  c++  java
  • Python笔记(七):字典、类、属性、对象实例、继承

    (一)  简单说明

       字典是Python的内置数据结构,将数据与键关联(例如:姓名:张三,姓名是键,张三就是数据)。例如:下面这个就是一个字典

    {'姓名': '张三', '出生日期': '2899-08-12', '成绩': ['3.21', '3.10', '3.01']}

    创建字典、添加数据、访问字典数据的方式如下:

    d = {}  #直接用{}创建字典
    f = dict() #通过工厂函数dict()创建字典
    #通过下面的方式添加数据
    d['姓名'] = '张三'
    d['出生日期'] = '2899-08-12'
    d['成绩'] = ['3.21', '3.10', '3.01', '2.45', '2.34', '2.22', '2.01']
    print(d)
    #通过键访问字典的数据
    print(d['姓名'])
    print(d['出生日期'])
    print(d['成绩'])
    print(d['成绩'][2])

    输出如下所示:

     

    (二)  将列表转换为字典

    (1)   创建一个文件

    james2.txt 第一项是姓名,第二项是出生日期,后面的是成绩

    James Lee,2002-3-14,2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22,2-01,2.01,2:16

    (2)   要求

    在屏幕上输出下面格式的字典

    {'姓名': 'James Lee', '出生日期': '2002-3-14', '成绩': ['3.21', '3.10', '3.01']}

    (3)   主程序代码

    from FirstPython import the_dict as td

    the_james2 = td.chdict('F:PythonPython文件james2.txt')
    print(the_james2)

    (4)   the_dict模块代码

    def sanitize(time_str):
        #传入字符串,将'-'和':'修改为'.'并返回,否则直接返回
       
    if '-' in time_str:
            (x,y) = time_str.split('-',1)
            return(x+"."+y)
        elif ':' in time_str:
            (x,y) = time_str.split(':',1)
            return (x + "." + y)
        else:
            return(time_str)

    def chdict(the_file):
        #传入文件,返回一个字典
       
    d = dict()
        with open(the_file) as james_file:
            the_list = james_file.readline().strip().split(',')
            #分割数据,返回一个列表
       
    d['姓名'] = the_list.pop(0)
        #pop()删除指定位置的数据项并返回
       
    d['出生日期'] = the_list.pop(0)
        d['成绩'] = sorted(set([sanitize(t) for t in the_list ]),reverse=True)[0:3]
        #set()删除重复数据并返回一个无序的集合,sorted()排序
       
    return d

    (三)  类、属性、对象实例

     简单的说,类和属性都是一个抽象的概念,对象实例是一个具体的“存在”。例如:

    类:人

    属性:姓名、身高、体重

    对象实例:张三、李四

    人 指一类东西,身高、姓名、体重 是这类东西都有的属性,张三、李四指的是具体的某一个人。

    (四)  创建类、创建对象实例

    class People:
        def __init__(self):

    说明:上面这部分是必须有的,其中 People是类名,自己自定义,__init__(self)方法控制如何初始化对象,self也是必须有的(这是一个目标标识符,标识当前对象具体是什么)

    举个例子:

    (1)   创建一个类

    class People:
        def __init__(self,name,date=None,achievement=[]):

    # date,achievement有缺省(默认)值
            self.name = name
            self.date = date
            self.achievement = achievement

    (2)   创建对象实例

    zs = People('张三')

    #创建 name为张三的对象实例

    说明:使用zs = People('张三')时,会自动调用people类的 __init__()方法,其中self = zs,name=’张三’,然后创建一个 name = ‘张三’date=None,achievement=[] 的对象实例zs

    (3)   类中可以定义很多方法,不过每个方法的第一个参数都必须是self(没有设置这个参数,那么第一参数就会被当做self参数处理)。

    例如:

    def chdict(self,the_file):
        with open(the_file) as new_file:
            the_list = new_file.readline().strip().split(',')
        return People(the_list.pop(0),the_list.pop(0),the_list)
    def top3(self):
        return(sorted(set(self.sanitize(t) for t in self.achievement),reverse=True)[0:3])

    (五)  继承

      可以从零开始创建一个新类,也可以继承已经创建好的类,在这个基础上新增属性、方法。

    继承的概念:继承父类的所有方法及属性,子类可以新增方法、属性,也可以重写父类的方法。简单的说,比如你继承了你父亲的所有能力及天赋(包括身高、体重等),然后你可以通过学习去掌握更多的能力,继承自你父亲的能力你也可以根据自己的需要去改变(比如:杰出的沟通能力,你父亲可能用在商业谈判上,你可能想用在泡妞上面)。比喻可能不太形象,请多多包涵。

    (1)   通过继承的方式创建一个类

    class PeopleList(list):
        def __init__(self):
            list.__init__([])

    PeopleList(list)新类将派生list类,list.__init__([]) 初始化所派生的类

    (2)   举个例子,下面这个类就能继承list的所有方法

    class PeopleList(list):
        def __init__(self,name,date=None,achievement=[]):
            list.__init__([])
            self.name = name
            self.date = date
            self.extend(achievement)
    可以在编辑器中进行测试:
    james = PeopleList('james')
    james.append(5)
    print(james)
    james.extend([1,2,3])
    print(james)
  • 相关阅读:
    转载 自定义ListView背景
    Android 在模拟器上创建sd卡
    转载 Android TextView加下划线
    转载 Dom4j生成xml
    转载 在Struts2中使用servlet 配置问题
    android开发不错的地方
    bat demo1自定义变量
    redhat 5下安装SVN
    linux 忘记root密码
    DEBUG Sigar no libsigarx86linux.so in java.library.path
  • 原文地址:https://www.cnblogs.com/simple-free/p/8406953.html
Copyright © 2011-2022 走看看