zoukankan      html  css  js  c++  java
  • Python 定制类与其对象的创建和应用

    1.创建新类Athlete,创建两个唯一的对象实例sarah james,他们会继承Athlete类的特性

    >>> class Athlete:
    	def __init__(self,a_name,a_dob=None,a_times=[]):
    		self.name=a_name
    		self.dob=a_dob
    		self.times=a_times
    
    		
    >>> sarah=Athlete('Sarah Sweeney','2002-07-02',['2:58','2.34','1.56'])
    >>> james=Athlete('James Jone')
    >>> type(sarah)
    <class '__main__.Athlete'>
    >>> type(james)
    <class '__main__.Athlete'>
    >>> sarah
    <__main__.Athlete object at 0x02DAB970>
    >>> james
    <__main__.Athlete object at 0x02A29990>
    >>> sarah.name
    'Sarah Sweeney'
    >>> james.name
    'James Jone'
    >>> sarah.dob
    '2002-07-02'
    >>> james.dob
    >>> sarah.times
    ['2:58', '2.34', '1.56']
    >>> james.times
    []
    >>> 
    

    2. 类及其对象的应用:senitize不变,定义类Athlete和两个子方法__init__与top3。通过get_coach_data函数进行调用

    def senitize(time_string):
        if '-' in time_string:
            splitter='-'
        elif ':' in time_string:
            splitter=':'
        else:
            return(time_string)
        (mins,secs)=time_string.split(splitter)
        return(mins+'.'+secs)
    
    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):
            return(sorted(set([senitize(t) for t in self.times]))[0:3])
    
    def get_coach_data(filename):
        try:
            with open(filename) as f:
                data=f.readline()
                user=data.strip().split(',')
                userob=Athlete(user.pop(0),user.pop(0),user)
                print(userob.name+"'s fastest times are:" + str(userob.top3()))
        except IOError as ioerr:
            print('File error' +str (ioerr))
            return (None) 
    
    get_coach_data('sarah2.txt')
    get_coach_data('james2.txt')
    get_coach_data('mikey2.txt')
    get_coach_data('julie2.txt')
    
    ========== RESTART: C:/Users/eric/Documents/Python/kelly/kelly2.py ==========
    Sarah Sweeney's fastest times are:['2.18', '2.21', '2.22']
    James Lee's fastest times are:['2.01', '2.16', '2.22']
    Mikey McManus's fastest times are:['2.22', '2.31', '2.38']
    Julie Jones's fastest times are:['2.11', '2.23', '2.59']
    

    3.添加2个新的方法给Athlete类,并调用测试

    def senitize(time_string):
        if '-' in time_string:
            splitter='-'
        elif ':' in time_string:
            splitter=':'
        else:
            return(time_string)
        (mins,secs)=time_string.split(splitter)
        return(mins+'.'+secs)
    
    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):
            return(sorted(set([senitize(t) for t in self.times]))[0:3])
        def add_time(self,time_value):
            self.times.append(time_value)
        def add_times(self,list_of_times):
            self.times.extend(list_of_times)
    
    vera=Athlete('VeraName')
    vera.add_time('1.31')
    print('Object name is:', vera.name)
    print(vera.name+"'s top3 is: " + str(vera.top3()))
    vera.add_times(['2.12','3.44','3.33'])
    print(vera.name+"'s top3 is: " + str(vera.top3()))
    ========== RESTART: C:/Users/eric/Documents/Python/kelly/kelly3.py ========== Object name is: VeraName VeraName's top3 is: ['1.31'] VeraName's top3 is: ['1.31', '2.12', '3.33'] >>>
  • 相关阅读:
    ssh批量远程执行脚本screen后台运行
    使用screen共享shell会话(终端共享)
    php获取一个月前的时间戳,获取三个月前的时间戳,获取一年前的时间戳
    jquery 鼠标经过延时触发事件,jquery插件
    jquery 克隆div 复制div 克隆元素 复制元素
    js实现一个可以兼容PC端和移动端的div拖动效果
    完美实现鼠标拖拽事件,解决各种小bug,基于jquery
    js将秒转换为 分:秒 函数
    php将秒转换为 分:秒 函数
    phpStudy启动失败时的解决方法 提示缺vc9运行库
  • 原文地址:https://www.cnblogs.com/oskb/p/4849277.html
Copyright © 2011-2022 走看看