들어가기 전이 글은 프로그래밍 러스트 2판을 공부하며 작성한 글입니다. 9. 스트럭트 (Struct)Struct 자바, 파이썬에서 제공하는 클래스와 거의 유사한 개념이다.Struct는 크게 다음 세 종류가 존재한다.필드형 Struct : 주로 많이 사용함.튜플형 Struct : 타입 검사를 좀 더 Strict 하게 하기 위해 NewType을 생성할 때 주로 사용.유닛형 Struct : 주로 Trait과 함께 사용할 때 유용하다고 한다. 필드형 Struct필드는 일부만 public, private으로 만들 수 있음.private 필드 : 같은 모듈 내에서는 참조 가능.public 필드 : 외부 모듈에서도 참조 가능.Struct가 private 필드로만 구성되어있으면, 외부 모듈에서는 직접 Struct를 ..
들어가기 전이 글은 Oreily에서 나온 프로그래밍 러스트를 공부하며 작성한 글입니다. 레퍼런스란?스마트 포인터 : 소유권을 가지는 포인터다. 스마트 포인터가 해제되는 시점에 포인터가 가리키는 값도 해제된다.레퍼런스 : 소유권을 가지지 않는 포인터다. 소유권은 Borrow 된다. 레퍼런스 특징레퍼런스는 자신이 가리키는 대상보다 오래 살아있으면 안됨. 레퍼런스가 안전하게 살아있을 수 있는 범위를 라이프타임이라고 함. 모든 레퍼런스는 라이프타임을 가짐.Shared Reference (Multi Reader를 위한 것)Shared Reference는 동시에 여러 개 존재할 수 있음.Shared Reference가 있는 동안은 값을 수정할 수 없음. 소유자라도 수정할 수 없음. Shared Reference가 ..
들어가기 전이 글은 프로그래밍 러스트(Oreilly)를 공부하며 작성한 글입니다. 소유권 (Ownership)러스트에서 소유권은 컴파일 시점에 검증된다. 소유권은 아래 메모리 안정성을 위해 러스트 컴파일러가 제공한다.Dangling Pointer가 없도록 한다.원하는 시점에 메모리가 해제되도록 한다.모든 값은 하나의 소유자를 가진다. (Rc, Arc는 복수 소유자가 존재 가능)소유자는 자신의 구성 요소들에 대한 소유권도 가진다. 이것은 소유권 트리 형태로 구성된다. 구조체는 자신의 필드들을 소유한다.벡터는 자신의 요소들을 소유한다. 소유자가 자신이 선언된 블록을 벗어날 때 무효화된다. 이 때, 소유하고 있던 값들도 모두 힙에서 제거된다. 소유권을 이동해서 트리를 만들고 바꿀 수 있다. Copy Trai..
FixtureFixture는 테스트가 시작하기 전 필요한 인자를 제공하거나, 상태를 정의하는데 사용한다. 예를 들어 다음과 같은 역할에 사용할 수 있다. SUT를 생성과 협력 관계의 인스턴스를 미리 설정된 조건으로 생성하고 제공한다. SUT, 혹은 통제할 수 없는 외부 인스턴스의 행동을 미리 지정한다. (Mocking 형태) Basic Fixture 생성해보기class Fruit: def __init__(self, name): self.name = name def __eq__(self, other): return self.name == other.name@pytest.fixturedef fruit_apple(): return Fruit('apple')@pytest..
들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 코드 : https://github.com/chickenchickenlove/effective-python/tree/master/item40 요약 파이썬에서는 부모 클래스가 자동으로 초기화 되지 않는다. 다중 상속보다는 믹스인 클래스로 합성해라. 다중 상속을 사용할 경우, 메서드의 실행 순서는 mro를 따른다. (Class.mro() 호출한 순서대로 메서드가 호출됨). [부모 클래스].__init__()를 이용해 직접 부모 클래스를 초기화 할 수 있다. mro 순서와는 다르게 부모 클래스가 초기화 됨. (개발자에게 혼란을 가져옴) 이렇게 할 경우, 다이아몬드 상속에서 부모 클래스가 여러 번 초기화 된다. (개발자에게 혼란을 가져옴) 부모 ..