오늘의 생각
이미 개발 업무를 많이 해 봤고, 관련된 공부도 나름 오래 했다보니 이론적인 부분을 이해하는 데 지장은 없는 것 같다.
객체 지향 프로그래밍을 쓰는 이유라던가, 함수의 호출과 선언이라던가 매우 익숙한 내용들이었다. 다만 문법 자체가 달라서 많은 연습이 필요할 것 같다.
이제 기본적인 조건문, 반복문 등을 사용할 수 있고 함수를 선언할 수 있으니 파이썬으로 알고리즘 공부도 시작하면서 기초를 다질 생각이다.
오늘의 학습내용
- 사용자 입력과 문자열의 변환
- 파일 입출력 방법
- 조건문 문법, 관계 연산자와 논리 연산자
- 자료형에 따른 반복문 문법, range() 함수를 활용한 범위 반복
- 함수 - 디폴트 매개변수, 가변 매개변수, 키워드 매개변수의 차이점과 활용법
- 객체 지향 프로그래밍의 장단점, 객체와 인스턴스의 차이점
- 클래스 상속과 메소드 오버라이딩, 다중 상속
- 내부 모듈과 외부 모듈의 활용법 (feat. seaborn)
- 예외 처리 기법, 구문 오류와 런타임 오류의 차이
추가적으로 알게 된 내용
1. 자바스크립트에서도 pass 문법에 대응하는 것이 있는가?
결론부터 말하자면 없다.
하지만 그에 대응하는 비슷한 역할은 있다.
빈 코드 블럭을 사용한다던가, 빈 함수 또는 화살표 함수를 사용하는 것이 그 방법이다.
if condition:
pass # 아무것도 하지 않음
if (condition) {
// 아무 동작도 하지 않음
}
위와 같은 방식으로 pass와 같이 동작시킬 수 있다.
2. 다중 상속은 파이썬에서만 가능한가?
처음 다중 상속에 대해 배웠을 때 조금 당황스러웠다.
지금까지 자바, 자바스크립트를 기반으로 한 내 지식에서 클래스를 여럿 상속 받는 경우는 없었기 때문이다.
찾아보니 자바, 자바스크립트 모두 다중 상속은 지원하지 않는다. 단, 비슷한 방식으로는 사용할 수 있다.
interface A {
void methodA();
}
interface B {
void methodB();
}
class C implements A, B {
public void methodA() { System.out.println("A method"); }
public void methodB() { System.out.println("B method"); }
}
자바의 경우 인터페이스를 통해서 다중 상속과 유사한 기능을 구현할 수 있다. 클래스는 호직 하나의 클래스만 상속할 수 있다.
let mixinA = {
methodA() { console.log("A method"); }
};
let mixinB = {
methodB() { console.log("B method"); }
};
class C {
constructor() {
Object.assign(this, mixinA, mixinB); // 믹스인을 통해 다중 상속 유사 구현
}
}
let c = new C();
c.methodA(); // A method
c.methodB(); // B method
자바스크립트는 믹스인(mixin) 패턴을 사용하여 여러 클래스로부터 속성과 메서드를 결합할 수 있다.
interface A {
methodA(): void;
}
interface B {
methodB(): void;
}
class Base {}
const MixinA = <T extends Constructor<Base>>(Base: T) => {
return class extends Base implements A {
methodA() {
console.log("A method");
}
};
};
const MixinB = <T extends Constructor<Base>>(Base: T) => {
return class extends Base implements B {
methodB() {
console.log("B method");
}
};
};
class C extends MixinA(MixinB(Base)) {}
const c = new C();
c.methodA(); // A method
c.methodB(); // B method
조금 더 나아가자면 타입스크립트를 통해 인터페이스와 믹스인 패턴을 결합해 더 복잡한 다중 상속 구조를 만들 수 있다. 이를 통해 인터페이스로 타입을 보장하고 믹스인을 통해 실제 구현을 추가하는 방식을 채택할 수 있다.
별개로 C++는 다중 상속을 지원한다고 한다.
'개발자 일기 > 일일회고 (TIL)' 카테고리의 다른 글
[Upstage AI Lab]부트캠프 4~6일차 (1) | 2024.11.21 |
---|---|
[Upstage AI Lab]부트캠프 3일차 (2) | 2024.11.19 |
[Upstage AI Lab]부트캠프 1일차 (4) | 2024.11.14 |
[원티드 프리온보딩 9월]3회차 회고 (1) | 2024.09.16 |
[원티드 프리온보딩 9월]2회차 회고 (4) | 2024.09.08 |
댓글