728x90
반응형
SMALL
목차
  1. 상속이란?
  2. 상속의 장점
  3. 클래스 상속하기
  4. 부모 클래스의 메서드 사용하기
  5. 메서드 오버라이딩
  6. super() 함수 사용하기
  7. 다중 상속

1. 상속이란?

상속이란, 기존에 정의해둔 클래스의 기능을 그대로 물려받아 새로운 클래스를 만드는 것을 말합니다. 이를 통해 코드를 재사용할 수 있으며, 안정적이고 유지보수에 용이합니다. 상속을 받는 새로운 클래스는 자식클래스(child, sub) 클래스라고 부르며, 상속을 받고자 하는 대상인 기존 클래스를 부모클래스(parent, super, base 클래스) 라고 부릅니다.

 

2. 상속의 장점

상속의 장점은 다음과 같습니다.

  • 코드를 재사용할 수 있다.
  • 유지보수가 쉽다.
  • 안정적인 코드를 작성할 수 있다.

 

3. 클래스 상속하기

클래스 상속은 다음과 같이 소괄호에 상속받을 클래스를 넣으면 됩니다.

 

4. 부모 클래스의 메서드 사용하기

부모 클래스의 메서드는 자식 클래스에서 그대로 사용할 수 있습니다.

 

 

위의 코드에서 Dog 클래스는 Animal 클래스를 상속받았으므로,

Animal 클래스의 메서드인 eat()과 sleep()를 사용할 수 있습니다.

 

5. 메서드 오버라이딩

자식 클래스에서 부모 클래스의 메서드를 재정의하는 것을 메서드 오버라이딩이라고 한다.

이 때, 자식 클래스에서 오버라이딩한 메서드가 실행됩니다.

 

6. 다중상속

파이썬에서는 다중 상속이 가능합니다. 다중 상속은 여러 클래스를 동시에 상속받을 수 있는 기능.

다중 상속을 사용하면 여러 클래스의 기능을 동시에 사용할 수 있다.

 

다중 상속을 사용할 때, mro() 메소드를 사용할 수 있다.

어떤 클래스에서 상속을 받고있는지를 나타냄

7. super() 함수

super() 함수는 부모 클래스의 메소드를 호출하는 함수입니다. 메소드 오버라이딩 등에서 사용됩니다.

 

728x90
반응형
LIST

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

예외 처리  (0) 2023.03.13
Special Method  (0) 2023.03.10
파이썬 클래스(Class)의 메소드(Method) 정리  (0) 2023.03.10
객체 지향과 클래스  (0) 2023.03.10
랜덤 모듈  (0) 2023.03.09
728x90
반응형
SMALL
목차:
  1. 클래스(Class)란?
  2. 프로퍼티(Property)란?
  3. 메소드(Method)란?
  4. 메소드 타입
클래스(Class)란?

파이썬에서 클래스(Class)는 객체를 생성하기 위한 템플릿입니다. 클래스는 객체를 만들기 위한 설계도이며, 객체의 공통적인 속성과 메소드를 정의하여 코드의 재사용성을 높이는 역할을 합니다.

 

프로퍼티(Property)란?

파이썬 클래스(Class)에서 프로퍼티(Property)는 클래스 내부의 변수입니다. 이 변수는 해당 클래스의 모든 객체에서 공통으로 사용됩니다.

 

메소드(Method)란?

파이썬 클래스(Class)에서 메소드(Method)는 함수(function)와 유사한 형태입니다. 하지만 해당 클래스의 객체에서만 호출할 수 있는 함수입니다. 메소드는 객체의 속성에 대한 연산을 행합니다.

 

 

메소드는 다음과 같은 형태로 호출
객체이름.메소드명()

 

메소드를 정의하는 예시

 

위 예시에서 increment() 메소드는 num 변수에 1을 더합니다.

decrement() 메소드는 num 변수에서 1을 뺍니다.

current_value() 메소드는 현재 num 변수의 값을 반환합니다.

reset() 메소드는 num 변수를 0으로 초기화합니다.

 

메소드 타입 파이썬 클래스(Class)에서는 메소드를 다음 두 가지 타입으로 구분
  • instance method: 객체 형태로 호출되기 때문에 해당 메소드를 호출한 객체에서만 사용합니다.
  • class method: 클래스 이름으로 호출하는 메소드입니다. 메소드 선언 위에 @staticmethod 라고 표기합니다. 스태틱 메소드는 클래스가 메모리에 올라올 때 자동으로 같이 올라가기 때문에 바로 사용이 가능합니다.

 

728x90
반응형
LIST

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

Special Method  (0) 2023.03.10
클래스의 상속  (0) 2023.03.10
객체 지향과 클래스  (0) 2023.03.10
랜덤 모듈  (0) 2023.03.09
콜백 함수  (0) 2023.03.09
728x90
반응형
SMALL
목차:
  1. 생성자(Constructor)란?
  2. 초기값 설정하는 방법
  3. 생성자에서 사용하는 매개변수
  4. 예시 코드
  5. 생성자(Constructor)란?
클래스를 객체화 시킬 때 가장 먼저 실행되는 메소드
init(self)으로 정의하며, 생성자에서는 해당 클래스가 다루는 데이터를 정의하고 초기화 

 

초기값 설정하는 방법
  • 생성자에서 변수를 초기화할 수 있음
  • 예를 들어, 아래와 같이 Dog 클래스를 정의하고 초기화할 수 있음

이렇게 생성자에서 초기값을 설정하면 객체를 생성할 때마다 해당 변수가 초기화됨

 

생성자에서 사용하는 매개변수
  • 생성자에서는 매개변수를 받아서 변수를 초기화할 수 있음
  • 예를 들어, 아래와 같이 Dog 클래스를 정의하고 초기화할 수 있음

  • 이렇게 생성자에서 매개변수를 받아서 초기화하면 객체를 생성할 때 해당 매개변수를 넘겨줘야 함
  • nickname은 기본값을 설정해놓았기 때문에 따로 넘겨주지 않아도 됨
예시 코드

 

결과

728x90
반응형
LIST
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
728x90
반응형
SMALL

1. 랜덤(random) 모듈

  • 임의의 숫자를 무작위로 반환
 

1-1. random()

  • 0이상 1미만의 실수 중에서 무작위로 하나를 뽑아 반환
 

 
 
import random

num = random.random()
print(num)
num = num * 10 # 내가 뽑고싶은 범위까지의 수를 곱해주면 됌
print(num)
num = int(num) # 0 ~ 9까지 정수
print(num)
num = num + 1 # 1 ~ 10까지 정수
print(num)
 
0.6736315465633101
6.736315465633101
6
7
 
 

 
# 1 ~ 10까지의 정수
num = int(random.random() * 10) + 1
print(num)
 
4
 
 

1-2. randrandge()

  • 원하는 범위를 입력하여 범위의 무작위 정수를 반환
 

 
random.randrange(1, 46)
 
40
 
 

1-3. shuffle()

  • 자료구조에 저장된 값 중 하나를 무작위 순서로 리턴(추출)

 
li = ['김사과', '반하나', '오렌지', '이메론', '배애리']
random.shuffle(li) # inplace 연산
print(li)
 
['오렌지', '이메론', '김사과', '배애리', '반하나']
 
 

1-4. choice()

  • 자료구조에 저장된 값 중 하나를 무작위로 반환

 
 
 
 
 
 
 
 

 
 
 
 
 
True

 

728x90
반응형
LIST

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

파이썬 클래스(Class)의 메소드(Method) 정리  (0) 2023.03.10
객체 지향과 클래스  (0) 2023.03.10
콜백 함수  (0) 2023.03.09
변수의 범위  (0) 2023.03.09
사용자 정의 함수(함수만들기)  (0) 2023.03.09
728x90
반응형
SMALL

1. 콜백함수(Callback Function)★

  • 직접 호출하는 것이 아닌 다른 함수에 의해 호출되는 함수
 

 
 
def callback_func(func): # func()함수의 이름을 보냄으로 
    for i in range(5):   # 함수의 주소를 보내게 됌
        func()           # 그래서 그 주소의 함수를 실행하게 됌

def print_hello(): # 함수도 객체이기때문에 함수명에 주소가 있음
    print('안녕하세요! 파이썬!')

 
 

 
 
print_hello()
 
안녕하세요! 파이썬!
 

 
 
callback_func(print_hello)
 
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
 

 
 
def callback_func(func, num):
    for i in range(num):
        func(i + 1)

def print_hello(num):
    print('안녕하세요 파2썬!', num)

def print_hi(num):
    print(f'hi 파3썬 {num}트')
 
 

 
 
callback_func(print_hello, 3)
 
안녕하세요 파2썬! 1
안녕하세요 파2썬! 2
안녕하세요 파2썬! 3
 
 

 
 
callback_func(print_hi, 5)
 
hi 파3썬 1트
hi 파3썬 2트
hi 파3썬 3트
hi 파3썬 4트
hi 파3썬 5트
 
 

2. 람다 함수(Lambda Function)

  • 단일문으로 표현되는 익명함수
  • 코드상에서 한번만 사용되는 기능이 있을 때, 굳이 함수를 만들지 않고 1회성으로 함수를 만들어 사용 (함수는 클래스를 통해 생성된 객체)
  • 무조건 return형
 

 
 
def square(x):
    return x **2
 
 

 
 
print(square(4))
 
16
 

 
 
lambda x: x ** 2
 
<function __main__.<lambda>(x)>
 
 

 
 
# 이렇게 안쓴다 ㅋㅋ
square = lambda x: x ** 2 
# 전체가 객체라는것을 보여주기 위해서 이렇게 씀
 
 

 
 
print(square(4))
 
16
 

 
 
print(square(5))
 
25
 
 

 
 
(lambda x: x ** 2)(4) # 이것도 잘안씀
 
16
 
 

 
 
def myData(string):
    return len(string.strip())
# 앞뒤공백 제거후 길이를 세주는 함수
 
 

 
 
print(myData('apple'))
print(myData('    apple      '))
 
5
5
 

 
 
data = ['watermelon', '         apple         ', '     banana', '   avocado   ']
 
 

 
 
print(sorted(data))
 
['         apple         ', '     banana', '   avocado   ', 'watermelon']
 

 
 
# mydata 함수를 적용해서 data리스트에서 sorted 해주는것
print(sorted(data, key=myData))
 
['         apple         ', '     banana', '   avocado   ', 'watermelon']
 
 

 
 
# 람다함수를 사용하여 위 예제를 변경
print(sorted(data, key=lambda string: len(string.strip())))
# data의 갯수(4) 만큼 매개변수string에 대입 해서 sort해서 출력하는 식
 
['         apple         ', '     banana', '   avocado   ', 'watermelon']
 
 

2-1. 람다가 유용하게 사용되는 대표적인 함수

 

 
 
# filter(): 특정 조건을 만족하는 요소만 남기고 필터링
# 트루일때만 남기게 됌

li = [1, 2, 3, 4, 7, 9, 10, 14, 15, 19, 20]

# print(filter(lambda n: n % 2 == 0, li))

result = list(filter(lambda n: n % 2 == 0, li))
print(result)

 
[2, 4, 10, 14, 20]
 
 

 
 
# 위에 람다랑 같은 역할의 함수
# 위에서 True False로 리턴해주었기때문에 함수에서도 bool형으로
def even(n):
    if n % 2 == 0:
       return True
    else:
        return False
 
 

 
 
# filter가 콜백함수이기때문에 even 함수에 ()를 사용안하였다.
result = list(filter(even, li))
print(result)
 
[2, 4, 10, 14, 20]
 
 

 
 
 
 
 
 
[0.01, 0.02, 0.03, 0.04, 0.07, 0.09, 0.1, 0.14, 0.15, 0.19, 0.2]
 
 

 
 
 
 
 
 

 
 
 
 
 
 
[0.01, 0.02, 0.03, 0.04, 0.07, 0.09, 0.1, 0.14, 0.15, 0.19, 0.2]

 

728x90
반응형
LIST

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

객체 지향과 클래스  (0) 2023.03.10
랜덤 모듈  (0) 2023.03.09
변수의 범위  (0) 2023.03.09
사용자 정의 함수(함수만들기)  (0) 2023.03.09
세트(set)  (0) 2023.03.08

+ Recent posts