Python chapter 11. 객체지향 프로그래밍

haeIT·2024년 4월 24일
1

Python

목록 보기
6/8

2024-04-24-WED 수업 [INTRODUCTION TO 파이썬] - 인포앤북

0. INTRO

  • 클래스 : 설계도, 틀

  • 객체 : 실체, 실제작동

  • 멤버변수
    => 속성, 상태, 필드, 변수
    => 메서드, 동작, 행동, 기능, 함수

  • 인스턴스 변수
    => 클래스를 연산자를 사용하여 만든다 (JAVA에서는 new연산자)
    => python에서는 인스턴스변수=클래스명()

  • 클래스명 규칙
    => 첫글자는 영어대문자를 사용
    => 나머지는 식별자 규칙과 유사

  • 객체변수
    => 소문자 사용

  • 식별자규칙
    => 첫글자는 영문, , $로 시작
    => 특수문자, 공백 사용불가 (
    $제외)
    => 숫자로 시작 불가
    => 대소문자 구분
    => 예약어 사용
    => 카멜기법, 스네이크기법
    =>식별자를 사용 용도에 맞는 유사한 단어 선택

  • 전역변수 : 프로그램 전체 어디서나 사용가능
    지역변수 : 블럭안에서 사용, 블럭을 나가면 사용불가


1. 객체지향 프로그래밍

  • 모듈 : *.py를 만들어서 import를 사용하여 불러온다
    패키지 : 폴더, 디렉토리를 from을 사용하여 불러온다.

⚠ import로 함수 불러오기도 가능하다.
예) from 패키지명 import 함수명1,2...

⚠ 클래스 안의 함수(def)는 메서드 라고 부르기

✔ 클래스

속성과 메소드로 구성되는 객체 생성에 사용되는 틀

✔ 객체

클래스로부터 생성되어 해당 클래스의 속성과 메소드를 가짐

✔ 속성

클래스와 객체 내부에서 사용되는 변수를 의미

✔ 메소드

클래스와 객체 내부에서 사용되는 함수를 의미한다.

객체 지향 프로그래밍(Object Oriented Programming, OOP)

  • 내가 아닌 남이 만든 코드를 재사용하고 싶을 때 사용하는 대표적인 방법

  • 함수처럼 어떤 기능을 함수 코드로 묶어 두는 것이 아니라, 어떤 기능을 수행하는 하나의 단일 프로그램을 객체라고 하는 코드로 만들어 다른 프로그래머가 재사용할 수 있도록 함

  • 클래스와 객체 예제 1번

class Person: 
    # 클래스를 만듦=> class 예약어, 클래스 명은 식별자 규칙 적용
    def hello(self):
        print("안녕하세요. 클래스 안에 있는 메서드 입니다.")
    #end method
# end class
# 클래스는 틀이므로 실체를 만들어서 사용한다. => 객체

person1 = Person()
# 객체변수(인스턴스변수) = 클래스명()  => 객체 생성

person1.hello()
# 객체 사용은 점(.)연산자 사용
# 객체변수.메서드()

  • 예제 2번
class Cat: # Cat 클래스 생성
    kor_name ="로키"
    eng_name="rocky"
    age =2
    # 한글이름, 영어이름, 나이 속성 

    def sound(self): # sound 메서드 생성
        print("야옹~!~!")

    def speed(self): # speed 메서드 생성
        print("엄청 빠르다!")

# end class

mycat=Cat()
# Cat클래스에 mycat 객체 생성

print("한글이름 :", Cat.kor_name)
print("영어이름 :", Cat.eng_name)
print("나이 :", Cat.age)
# 클래스.객체명으로 출력

mycat.sound()
mycat.speed()
# 객체.메서드명으로 출력


⚠ 인스턴스

  • 클래스로 부터 생성되는 것을 객체라고 하고, 그 객체가 실제 컴퓨터 메모리에 할당되어 사용될 때의 객체를 인스턴스(Instance)라고 부른다.
  • 객체와 같은 것이라고 생각해도 무방
  • 구분하자면 다음과 같음
    1. Members 클래스로 member1 객체를 생성한다.
    2. member1dms Members 클래스의 인스턴스이다.

2. self 매개변수

class Members:
    def set_info(self, name):
        self.name=name
        # 객체변수.매개변수 = 매개변수
    # 클래스의 메소드에서 사용되는 매개변수 self는
    # 객체에서 메소드를 호출할 때 해당 객체를 전달받는데 사용된다.

    def show_info(self):
        print("이름 :", self.name)
# end class

member1 = Members()
member1.set_info("홍지수")
member1.show_info()

member2 = Members()
member2.set_info("안지영")
member2.show_info()


3. 생성자 init

__init__(self, 속성1, 속성2...)

이 클래스에서 사용할 속성을 정의하는 초기화 함수

  • 예제
class Members:
    def __init__(self, name, age): 
    # init을 이용하여 속성을 정의하고, 함수로 묶었다
        self.name = name
        self.age = age

    def show_info(self) : # 인수는 객체를 받음
        print("이름 :", self.name)
        print("나이 :", self.age)
# end class

member1 = Members("황선영", 18)
member1.show_info()

member2 = Members("최종화", 32)
member2.show_info()


4. 속성 Attribute

  • 클래스에서 사용되는 속성에는 인스턴스 속성과 클래스 속성이 있다.

👉 클래스 속성

클래스에 속해 있는 속성, 해당 클래스에서 파생된 모든 객체가 속성을 가질 수 있다.

👉 인스턴스 속성

객체(인스턴스)에서만 그 값이 유효

✨속성 예제 1. 인스턴스 속성

class Student:
    def __init__(self) :
    # 생성자를 이용해서 속성을 초기화
        self.pet = [] 
        # 인스턴스 속성
        # john과 sally 각각의 객체에서만 유효함
    
    def push_pet(self, x):
        self.pet.append(x)
# end class

john = Student()
john.push_pet("고양이")
print(john.pet)

sally = Student()
sally.push_pet("이구아나") 
print(sally.pet)

  • 각각의 객체에서만 유효하기 때문에 하나씩만 출력된다.

✨ 속성 예제 2. 클래스 속성

class Student:
    pet = [] 
    # 클래스 속성
    # john과 sally 모두가 속성 가짐

    def push_pet(self, x):
        self.pet.append(x)
# end class

john = Student()
john.push_pet("고양이")
print(john.pet)

sally = Student()
sally.push_pet("이구아나") 
print(sally.pet)


2024-04-25-THU 수업 [INTRODUCTION TO 파이썬] - 인포앤북

5. 상속

👉 다른 클래스에 있는 속성과 메소드를 상속받아 클래스를 정의할 수 있는 기능을 제공

🧐 형식

class A :  # 부모 클래스 A, 상위 클래스, 루트 클래스
멤버변수
class B(A) : # 자식 클래스 B, 하위, 파생

super()

부모 클래스에서 정의된 생성자를 가져와서 자식 클래스에 포함시키는 역할을 수행함.

✨ 상속 예제

0개의 댓글

관련 채용 정보