Python 9 과-클래스(class)를 사용 하여 새로운 데이터 형식 을 만 듭 니 다!

4898 단어 종류pythonClass
머리말
지난 몇 시간 동안 우 리 는 내 장 된 데이터 형식,문자열,목록,사전 등 을 많이 접 했다.
프로 그래 밍 언어 에 정 의 된 데이터 형식 만 사용 할 수 있 습 니까?만약 그들 이 기 존 데이터 의 표현 에 매우 적합 하지 않다 면?우 리 는 새로운 데이터 형식 을 만들어 서 사용 할 수 있 습 니까?
물론 대상 을 대상 으로 하 는 사상 중의 클래스(class)개념 은 우리 가 이 임 무 를 완성 하 는 데 도움 을 줄 수 있 습 니 다!
지난 시간 getdata 함수 에서 추출 한 데이터 형식 은 사전(dictionary)이 고 james 2.txt 내 데이터 표현 방식 은:

james_data = {'dob': '2002-3-14', 'name': 'James Lee', 'times': ['2.34', '3.21', '2.34', '2.45', '3.01', '2.01', '2.01', '3.10', '2.22', '2.01', '2.01', '2.16']}

이 정도 면 충분 하지만 우 리 는 데이터 표현 방식 에서 더 잘 할 수 있 습 니 다!
클래스(class)에 대한 기초 연습
대상:맞 춤 형 클래스 Athlete 만 들 기
소개:name,dob,times 속성 을 포함 하여 times 속성 을 추가,삭제 하 는 등 사전 과 기본적으로 비슷 한 구조 와 방법 을 Athlete 로 구현 합 니 다.
1.먼저 데이터 포맷 함수 sanitize 를 정의 하여 수업 을 그대로 옮 기 면 됩 니 다.
2.정의 Athlete 클래스:

class Athlete:
'''        name,dob,times
    add_time( times         );add_times  ( times         )'''
    def __init__(self, a_name, a_dob=None, a_times=[]): #python       ,          
        self.name = a_name
        self.dob = a_dob
        self.times = a_times
    def add_time(self, value): #        ,            
        self.times.append(value)
    def add_times(self, values): #self            ,           。   self             (   ),  java  this  
        self.times.extend(values)

3.수업 중 데 이 터 를 가 져 오 는 get 수정데이터 방법

def get_data(filename):
'''                  ','  ,  sanitize         Athlete    
  filename         '''
    try:
        with open(filename) as f:
            data = f.readline()
            ldata = data.strip().split(',')
            a_name = ldata.pop(0)
            a_dob = ldata.pop(0)
            clean_times = [sanitize(each_time) for each_time in ldata]          
        return(Athlete(a_name, a_dob, clean_times)) #   Athlete   ,  Athlete     
    except IOError as ioerr:
        print('file missing: ' + str(ioerr))

4、get 호출data 방법 으로 결 과 를 보다

james_data = get_data('james2.txt') #james_data——Athlete     
print(james_data.name, james_data.dob, james_data.times) #james_data.name——     

james_data.add_times(['4.52', '3.71']) #     
print(james_data.times)

결과:

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.34', '3.21', '2.34', '2.45', '3.01', '2.01', '2.01', '3.10', '2.22', '2.01', '2.01', '2.16', '4.52', '3.71']

2.유형의 깊이 있 는 탐색:계승
    우 리 는 Athlete 류 를 list 에서 계승 하 는 클래스 로 개조 할 것 이다(list 자체 도 하나의 클래스)
    이렇게 하면 Athlete 는 목록 의 모든 특성 을 사용 할 수 있 습 니 다!개 발 량 감소,뇌 세포 사 망 량 감소!
    처리 대기 데이터 의 이름,생일 은 어떻게 합 니까?Athlete 는 맞 춤 형 유형 이라는 것 을 잊 지 마 세 요.우 리 는 그것 에 게 두 가지 속성 을 주어 각각 이름,생일 을 표현 할 수 있 습 니 다.
대상:기 존 Athlete 클래스 수정
소개:
    Athlete 자체 가 하나의 목록 으로 운동선수 의 성적 을 표현 하도록 한다.그러면 목록 의 기 존 방법 으로 Athlete 를 조작 하여 정의 방법의 번 거 로 움 을 줄 일 수 있다.
    또한 Athlete 류 에 두 가지 속성,name 속성 과 dob 속성 을 추가 하여 운동선수 의 이름과 생일 을 표현 합 니 다.
1.Athlete 클래스 수정:

class Athlete(list):
'''        ,        
       name,dob'''
    def __init__(self, a_name, a_dob=None, a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.extend(a_times)

2,sanitize 와 getdata 함수 가 변경 되 지 않 습 니 다.결 과 를 실행 해 보 세 요:

james_data = get_data('james2.txt')
print(james_data.name, james_data.dob, james_data) #james_data Athlete     ,        

james_data.append('4.32') #Athlete   list,  list   Athlete    
print(james_data)

결과:

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.34', '3.21', '2.34', '2.45', '3.01', '2.01', '2.01', '3.10', '2.22', '2.01', '2.01', '2.16', '4.32']

류 의 지식 은 아직 많이 있 으 니,후에 다시 이야기 하 자!

좋은 웹페이지 즐겨찾기