• 상속 (Ingeritance)지금까지 클래스를 모델링 하기 위해 상속(Inheritance)의 개념을 사용하였다.상속은 객체 지향 언어에서 가장 중요한 기반중의 하나로, 부모 클래스와 자식 클래스라고 하는 파생 클래스간의 긴밀한 관계를 모델링 하는 훌륭한 개념이다.이러한 관계들의 결과로 기본 클래스들은 모든 메서드와 속성을 상속하는 하위 클래스이며,하위 클래스는 상속된 모든 것을 확장(extend) 할 수 있다.또 이러한 클래스들은 밀접하게 결합 되어있다고 한다.(Classes are tightly coupled.) 상속 모델은 is -a 관계라고도 불린다.a Laptop is a (specialized form of) Computer.a Square is a (specialized form of) Fi..

  • 속성 캡슐화 (Attribute encapsulation)캡슐화는 객체 지향 프로그래밍(상속, 다형성, 추상화와 함께)의 기본 개념중 하나이다.클래스 내에서 속성과 해당 속성에 적용되는 메서드를 묶는 개념을 설명한다. 캡슐화 (Encapsulation) 캡슐화는 캡슐처럼 클래스 내부 속성을 숨겨 권한이 없는 사용자가 직접 접근하지 못하도록 하는데 사용된다.클래스에는 공개적으로 접근 가능한 메서드를 제공하여 접근할 수 있고,다른 객체는 이러한 메서드를 호출하여 객체 내부 값을 가져오고 수정한다.이를 통해 속성에 대한 일정 수준의 프라이버시를 강화할 수 있다. 해당 이미지를 보면 Method를 통해 접근하는 것을 보여주고 있다.이는 프록시 처럼 동작하는 메서드를 항상 호출하여 속성에 대한 일부 작업을 수행하..

  • python은 매우 유연한 프로그래밍 언어이나, 그렇다고 해서 기능들의 집합이나 클래스 계층 구조 순서를 강제하는 제어 기능이 없다는 것이 아니다. 각 클래스가 인터페이스(메서드)를 통해 클래스에 대한 요구 사항을 설정할 수 있는 방법이 있다면 유용할 것이다. 추상 클래스란 ?다른 클래스에 대한 청사진으로, Class designer 와 Programmer 간의 약속을 정의한다.클래스의 설계자(Class designer)는 메서드를 구체적으로 정의하지 않고 선언으로 만 구현해야하는 메서드에 대한 요구사항만 설정한다. 이러한 메서드를 추상 메서드(Abstract methods)라고 한다개발자(Programmer)는 클래스 설계자로 받은 메서드 선언을 재정의한다.해당 방식은 추상 클래스를 기반으로 하는 자식..

  • class Car : def __init__(self,name,model,color): self.name = name self.model = model self.color = color def show(self): print("Name : ",self.name) print("Model : ",self.model) print("Color : ",self.color)car = Car("Toyota","Corolla","Black")print(car.name)car.show() 지금까지 우리는 인스턴스 객체에 대한 메서드를 구현해왔기 때문에 이를 인스턴스 메서드(instance methods)라고 불렀다.인스턴스 메서드는 첫번째 매개변수로 self를 받는데 이것이 인스..

  • 데코레이터는 객체 구조 관련하여 설명하는 디자인 패턴중 하나이다.파이썬은 함수, 메서드, 클래스를 데코레이터로 지정할 수 있다.데코레이터 동작은 함수를 새로운 데코레이팅 함수 또는 클래스로 감싸는 것을 기반으로 "decoration"라고 이름지어졌다.이는 원래 함수를 데코레이팅 함수에 매개변수로 전달하여 데코레이팅 함수가 전달된 함수를 호출할 수 있도록 하는 방식으로 수행된다. 데코레이팅 함수는 나중에 호출할 수 있는 함수를 반환한다. 물론 데코레이팅 함수는 많은 작업을 수행한다.데코레이팅된 함수의 매개변수를 가져와 추가 작업을 할 수 있기 때문에 실제 데코레이팅 함수가 된다.클래스 데코레이팅도 같은 원리가 적용된다.이후에 이러한 개념적인 부분을 차차 풀어보고자 한다.지금은 일단 데코레이터 라는 용어가 ..

  • 우리는 아무렇지 않게 print()를 사용해왔다.print(1)print(1, 2)print(1, 2, 'Hi')11 21 2 Hiprint()의 함수 호출은 임의의 개수를 가진 매개변수를 받는 함수로, 이러한 함수들을 종종 볼 수 있다.이렇게 가변적인 인자를 처리하기 위해 어떻게 사용될까 ?*arg,**kwargs 함수 정의의 마지막에 추가하여 사용한다.arg와 kwargs로 명명하는 것이 관례이며, 사실 이름은 변경할 수 있지만 *의 사용과 갯수가 중요하다. * arg명시적으로 예상되지 않는 모두 추가 위치 인수의 튜플을 나타낸다.즉, 키워드 없이 전달되고 예상 인수 다음에 전달되는 인수를 의미하는데 쉽게 말해서 일치하지 않는 모든 인수를 수집한다.def arg(a, b, *args): print(..

  • Copyright 2024. GRAVITY all rights reserved