728x90
반응형
SMALL

1. 객체지향 프로그래밍

  • 문제(ex, 프로젝트등) 를 여러개의 객체 단위로 나눠 작업하는 방식
 

1-1. 객체(object)란?

  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한것을 말함
  • (메모리에 올라가있음)
 

1-2. 클래스란?

  • 객체를 생성하기 위한 일종의 설계도
  • 프로퍼티or필드(변수)ex. 명사, 메소드(함수)ex. 동사로 구성
    • 프로퍼티(property): 데이터가 저장되는 곳
    • 메소드(method): 객체의 동작에 해당하는 실행 블록

1-3. 클래스와 객체

  • 건축 설계도가 클래스라면, 실제로 지어진 집은 객체
  • 객체는 클래스로 생성되어 구체화된 인스턴스(복제)
  • 실제로 클래스가 인스턴스화 되어 메모리에 상주하는 형태를 객체라고 부름
  • 파이썬의 모든 변수와 함수는 객체로 저장

 

 

파이썬 클래스(Class)란?

 

목차:

1. 클래스란?
2. 클래스 만들기
3. 객체 생성하기
4. 프로퍼티와 메소드
5. 예제

 

클래스란?

클래스(Class)란 객체(Object)를 생성하기 위한 일종의 설계도입니다. 클래스는 객체를 생성하기 위한 필드(Field)와 메소드(Method)를 정의하며, 객체를 생성할 때 이러한 필드와 메소드를 상속받아 사용합니다.

 

클래스 만들기

클래스를 만들 때는 다음과 같은 문법을 사용합니다.

 

class 클래스명:
    프로퍼티명 = 값1
    프로퍼티명 = 값2
    ...

    def 메소드명1(self, 변수1, 변수2 ..): 
        메소드가 호출되면 실행할 문장
        ...
    def 메소드명2(self, 변수1, 변수2 ..): 
        메소드가 호출되면 실행할 문장
        ...

 

객체 생성하기

클래스를 통해 객체를 생성할 때는 다음과 같이 사용합니다.

객체명 = 클래스명()

 

프로퍼티와 메소드

 

클래스를 통해 생성된 객체는 프로퍼티와 메소드를 가지고 있습니다. 프로퍼티는 클래스에서 정의된 필드를 의미하며, 메소드는 클래스에서 정의된 함수를 의미합니다.

class Dog:
    name = '루시'
    age = 13
    family = '포메'

    def eat(self):
        print('사료를 먹습니다!')

위 예제에서는 Dog라는 클래스를 정의하고, name, age, family라는 프로퍼티와 eat이라는 메소드를 정의하였습니다. eat 메소드는 "사료를 먹습니다!"라는 문장을 출력합니다.

객체를 생성한 후에는 프로퍼티와 메소드를 호출할 수 있습니다.

Rucy = Dog()
print(Rucy.name)
print(Rucy.age)
print(Rucy.family)
Rucy.eat()

위 예제에서는 Dog 클래스로 Rucy 객체를 생성하고, name, age, family라는 프로퍼티를 출력하였습니다. eat 메소드도 호출하여 "사료를 먹습니다!"라는 문장을 출력하였습니다.

 

예제

아래는 클래스를 사용한 예제입니다.

class Animal:
    name = ''
    age = 0
    gender = ''

    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def introduce(self):
        print("안녕하세요. 제 이름은 %s이고, %d살 %s입니다." % (self.name, self.age, self.gender))

cat = Animal("야옹이", 3, "수컷")
dog = Animal

 

728x90
반응형
LIST

'파이썬' 카테고리의 다른 글

클래스의 상속  (0) 2023.03.10
파이썬 클래스(Class)의 메소드(Method) 정리  (0) 2023.03.10
랜덤 모듈  (0) 2023.03.09
콜백 함수  (0) 2023.03.09
변수의 범위  (0) 2023.03.09

+ Recent posts