FP와 OOP 혼합

함수형 프로그래밍이나 객체 지향 프로그래밍을 독점적으로 사용하는 대신 JavaScript 또는 Python과 같이 둘 다 지원하는 언어에서 혼합 접근 방식을 사용할 수 있습니다.

예를 들어, 여전히 클래스를 사용한 다음 클래스 인스턴스를 함수에 전달할 수 있습니다.

아래에는 단순화된 코드 예제가 있습니다. 사전/연관 배열 또는 개체 인스턴스를 허용하는 일반 함수가 있습니다.

function getAge(obj) {
  return obj.age
}

foo = new Car(name="Toyota", age=20)
getAge(foo)
// 20

bazz = { name: "Monster Truck", age: 5 }

cars = [foo, bar, bazz]
ages = cars.map(getAge)
// [ 20, 10, 5 ]


함수는 예상 필드가 있는 한 유형 클래스가 무엇인지 신경 쓰지 않습니다. 그리고 TypeScript에서 type 또는 interface를 사용하여 컴파일 타임에 이를 적용할 수 있습니다.

아마도 모든 메소드를 모듈의 함수로 이동할 수 있습니다. 클래스를 사용하여 데이터를 보유하고 메서드가 없는 경우에는 더 적합한 다른 객체 유형을 고려하십시오.

사전/연관 배열과 같습니다. TypeScript 또는 Python( Mypy 사용)에서 유형을 사용하여 이를 적용할 수 있습니다. Mypy를 Python 프로젝트에 적용하는 방법에 대한 지침이 있습니다here.

Python에서는 변경할 수 없는 namedtuple 를 사용할 수 있으며 문자열 키를 사용하는 대신 속성을 가져오는 클래스 스타일 구문을 사용할 수 있습니다.

example을 기반으로 합니다. PY3 문서의 namedtuple도 참조하십시오.

import collections


Person = collections.namedtuple('Person', 'name age gender')

bob = Person(name='Bob', age=30, gender='male')
bob.gender
# 'male'


또는 Python 3.7에서 dataclass 을 사용하십시오. 이것은 유형을 적용하지 않습니다. 이를 확인하려면 여전히 Mypy가 필요합니다.

from dataclasses import dataclass

@dataclass
class Point:
     x: int
     y: int


p = Point(1, 2)

좋은 웹페이지 즐겨찾기