• 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'] >>>
  • 相关阅读:
    python selenium 弹框元素获取
    python小知识点
    ubuntu下配置java环境变量
    用Filezilla往ubuntu虚拟机上传文件
    jmeter,监控插件
    fiddler接口测试
    ZeroClipboard 复制到剪贴板 中文文档
    常用正则表达式
    中英文字体对照 ueditor添加字体
    字符串操作
  • 原文地址:https://www.cnblogs.com/oskb/p/4849277.html
Copyright © 2020-2023  润新知