일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- Udemy
- 데이터분석전문가
- KMOOC
- ADP
- 미분적분학
- 빅데이터
- Joseph Samuel Nye Jr.
- 코테
- 알고리즘
- python
- Baekjoon
- 누가 진정한 리더인가
- 정치학
- 당신이 몰랐던 진화론
- 후기
- 위대한 수업
- 공부정리
- 조지프 나이
- 자료구조
- Great Minds
- 백준
- MySQL
- Hacker Rank
- Progate
- CNN10
- 맛집
- K-MOOC
- EBS
- ADsP
- 데이터분석전문가가이드
Archives
- Today
- Total
ㅇ
[Udemy] JavaScript 알고리즘 & 자료구조 마스터클래스_Section 18 본문
* 수업은 JS 기반이지만 Python으로 구현
Section 18
자료구조란 무엇인가
- 자료구조란 값들의 모음으로 해당 데이터에 적용되는 값들 및 기능 혹은 작업들 사이의 관계를 포함한다.
ES2015 클래스 구문 개요
- 클래스: 사전에 정의된 속성 및 메소드들을 이용해 객체를 생성하기 위한 청사진
- 새로운 어레이가 먼저 인스턴스화되어야 하고, 그 후에야 모든 것들에 접근할 수 있다.
- 자바 스크립트는 기술적으로 진정한 객체 지향 프로그래밍을 지원하지 않지만, 구현해낼 수 있다.
자료구조: 클래스 키워드
- class를 정의하는 것 자체로는 어떤 일도 발생하지 않으며, 해당 class의 인스턴스를 생성해야 한다.
- class는 패턴을 정하는 것이다.
- JS에서 class 내부에 constructor 부분
- python에서 def __init__(self): 로 활용할 수 있다.
- 생성자(constructor)란 객체가 생성될 때 자동으로 호출되는 메서드로, self는 생성되는 instance 객체 자신을 나타낸다. 이후 매개변수를 더 추가하여 self.객체변수 = 매개변수로 표현할 수 있다.
- class를 이용하여 instance를 생성할 때 활용하는 것은 매개변수이고, class 내에서 특성을 활용하는 것은 객체변수이다.
- JS에서 class 내부에 this 부분
- python에서 self로 활용할 수 있다.
- 생성되는 각 객체를 가리키는데 사용한다.
- JS에서 객체를 생성할 때, let 객체이름 = new 클래스이름(매개변수들 ... )
- python에서 객체이름 = 클래스이름(매개변수들)
- class 선언과 객체선언에 활용하는 함수 이름이 달라 블로그를 참고하였다.
# class 선언
class Student:
# constructor
def __init__(self, firstName, lastName, year):
self.firstName = firstName
self.lastName = lastName
self.grade = year
# a 객체 생성
a = Student('Julia', 'Kim', 3)
# a 객체변수의 값을 확인하기
a.firstName
a.lastName
a.grade
# a 객체의 값 수정하기
a.grade = 4
a.grade
자료구조: instance method 추가하기
- instance method는 특정한 단일 인스턴스에 적용되는 기능을 제공한다.
- JS에서 class 내부에 instance method인 함수 부분
- python에서 def 함수명(self): 로 활용할 수 있다.
- 파이썬에 사용되는 instance class 사용법은 블로그에서 참고하였다.
- reduce 함수 사용법은 블로그에서 참고하였다.
- iterable 객체의 요소를 차례대로 누적 적용하여 이 객체를 하나의 값으로 줄이는 함수이다.
- reduce(사용함수, iterable 객체, 초기값) 으로 초기값은 생략이 가능하다.
- 사용함수를 따로 지정해도 되지만, lambda를 이용하면 lambda 매개변수: 표현식과 같이 사용할 수 있다. 코드의 간결함과 메모리의 절약때문에 사용한다고 한다.
class Student:
# constructor
def __init__(self, firstName, lastName, year):
self.firstName = firstName
self.lastName = lastName
self.grade = year
self.tardies = 0
self.scores = []
# instance method
def fullName(self):
return 'Your full name is {} {}.'.format(self.firstName, self.lastName)
# instance method
def markLate(self):
self.tardies += 1
if self.tardies >=3:
return 'YOU ARE EXPELLED!!!!!'
return '{} {} has been late {} times.'.format(self.firstName, self.lastName, self.tardies)
# instance method
def addScore(self, score):
self.scores.append(score)
return self.scores
# instance method
def calculateAverage(self):
from functools import reduce
sum = reduce(lambda x, y: x + y, self.scores, 0)
return sum / len(self.scores)
# instance 선언
a = Student('Julia', 'Kim', 3)
# instance method 수행
a.fullName()
# instance method 수행
a.markLate()
# instance method 수행
a.addScore(50)
# instance의 속성 확인
a.scores
# instance method 수행
a.calculateAverage()
자료구조: class method 추가하기
- static method는 클래스에 종속되는 반면, 클래스의 개별 instance method에 반드시 종속적일 필요가 없는 method 혹은 기능들을 생성하도록 해주며 자주 사용되지는 않는다.
- 일반적인 종합 기능 혹은 유틸리티 펑션 등과 같이 클래스에 필요한 한 부분이다.
- JS에서 class 내부에 static method인 함수 부분
- python에서 @staticmethod 라는 데코레이터를 붙인다.
- 데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용한다. 블로그 참조
# class 선언
class Point:
#constructor
def __init__(self, x, y):
self.x = x
self.y = y
# static method
@staticmethod
def distance(a, b):
import math
dx = a.x - b.x
dy = a.y - b.y
return math.hypot(dx, dy)
# instance 선언
p1 = Point(5, 5)
p2 = Point(10, 10)
# static method 활용
Point.distance(p1, p2)
반응형
'내 생각 > 강의' 카테고리의 다른 글
[Udemy] JavaScript 알고리즘 & 자료구조 마스터클래스_Section 20 (0) | 2023.07.27 |
---|---|
[Udemy] JavaScript 알고리즘 & 자료구조 마스터클래스_Section 19 (0) | 2023.07.25 |
[EBS_위대한 수업] [경제학] 리처드 도킨스, 당신이 몰랐던 진화론_5강 과학이라는 마법 (0) | 2023.07.10 |
[EBS_위대한 수업] [경제학] 리처드 도킨스, 당신이 몰랐던 진화론_4강 불완전한 설계 (0) | 2023.07.08 |
[EBS_위대한 수업] [경제학] 리처드 도킨스, 당신이 몰랐던 진화론_3강 날개의 비밀 (0) | 2023.07.07 |
Comments