Python 9 과-클래스(class)를 사용 하여 새로운 데이터 형식 을 만 듭 니 다!
지난 몇 시간 동안 우 리 는 내 장 된 데이터 형식,문자열,목록,사전 등 을 많이 접 했다.
프로 그래 밍 언어 에 정 의 된 데이터 형식 만 사용 할 수 있 습 니까?만약 그들 이 기 존 데이터 의 표현 에 매우 적합 하지 않다 면?우 리 는 새로운 데이터 형식 을 만들어 서 사용 할 수 있 습 니까?
물론 대상 을 대상 으로 하 는 사상 중의 클래스(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']
류 의 지식 은 아직 많이 있 으 니,후에 다시 이야기 하 자!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 멀티태스킹과 인터페이스를 실현하는 클래스의 대상을 인터페이스에 인용하는 방법(추천)우리는 인터페이스 유형의 인용 변수를 정의하여 인터페이스를 실현하는 클래스의 실례를 인용할 수 있다. 클래스 B와 클래스 C의 실례를 인터페이스 인용 a에 부여함으로써 방법이 운행할 때의 동적 귀속을 실현했고'하나의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.