본문 바로가기
Python Object-oriented Programming

Class

by 자동매매 2023. 4. 2.

 

Objects

개체 data(데이터) functionality(기능) 포함하는 컨테이너입니다.

데이터 특정 시점의 개체를 나타냅니다. 따라서 객체의 데이터를 state(상태)라고합니다. 파이썬 attributes(속성) 사용하여  객체의 상태 모델링합니다.

기능 개체의 behavior(동작) 나타냅니다  . 파이썬 함수 사용하여  동작 모델링합니다. 함수가 객체와 연관되면 객체 메소드가됩니다.

 

즉, 개체는 상태와 메서드를 포함하는 컨테이너입니다.

 

objects 만들기 전에 먼저 클래스를 정의합니다.

그리고 클래스에서 하나 이상의 개체를 만들 있습니다. 클래스의 개체는 클래스의 인스턴스라고도 합니다  .

 

Define a class

 

Python에서 클래스를 정의하려면 class 키워드 뒤에 클래스 이름과 콜론을 사용합니다. 다음 예제에서는 Person 클래스를 정의합니다.

 

class Person:
    pass

 

규칙에 따라 Python 클래스에는 대문자로 이름을 사용합니다. 클래스 이름에 여러 단어가 포함된 경우 CamelCase 형식(: SalesEmployee) 사용합니다.

Person 클래스는 불완전하므로 나중에 코드를 추가하겠다는 의미로 pass 사용해야 합니다.

클래스의 인스턴스를 만들려면 다음과 같이 괄호가 있는 클래스 이름을 사용합니다.

 

person = Person()

 

person 개체를 출력할  이름과 메모리 주소(16진수)가 표시됩니다.

 

class Person:
    pass


print(person)

 

Output:

 

<__main__.Person object at 0x000001C46D1C47F0>

 

객체의 ID 가져오려면 id() 함수를 사용합니다. 예를 들어:

 

print(id(person))

 

Output(10진수 표기):

 

1943155787760

 

개체의 ID 고유합니다. CPython에서 id() 객체의 메모리 주소를 반환합니다. hex() 함수는 id() 함수에서 반환된 정수를 접두사 0x 붙은 소문자 16진수 문자열로 변환합니다.

 

print(hex(id(person)))

 

Output:

 

0x1c46d1c47f0

 

Person 개체는 Person 클래스의 인스턴스입니다  . isinstance() 함수는  객체가 클래스의 인스턴스인 경우 True 반환합니다.

 

print(isinstance(person, Person))  # True

 

A class is also an object in Python

 

파이썬의 모든 것은 클래스를 포함하여 객체입니다.

Person 클래스를 정의할  파이썬은 이름이 Person 객체를 만듭니다. Person 개체에는 성이 있습니다. 예를 들어 __name__ 속성 사용하여 이름을 찾을 있습니다  .

 

print(Person.__name__)

 

Output:

 

Person

 

Person 개체의 type 다음과 같습니다. - 클래스는 type class이다

 

print(type(Person))

 

Output:

 

<class 'type'>

 

Person 클래스에도 동작 있습니다. 예를 들어 새 인스턴스를 만들 수 있습니다.

 

person = Person()

 

Summary

  • 개체는 상태 동작 포함하는 컨테이너입니다.
  • Python에서 클래스는 개체이며, type인스턴스입니다.
  • 클래스는 개체를 만들기 위한 청사진입니다.

'Python Object-oriented Programming' 카테고리의 다른 글

Class Variables  (0) 2023.04.02
Class attributes  (0) 2023.04.02
Callable  (0) 2023.04.02
Object-oriented Programming  (0) 2023.04.02
Property Decorator  (0) 2023.04.01

댓글