• 클래스

- 데이터를 포함한 데이터구조(field, attribute)와 함수(function, procedure, 메서드라고 부름)로 구성
- 객체 내부에 포함된 데이터를 메서드를 통해 수정 가능 (this 또는 self 키워드 사용)
- 프로그램은 모두 객체로 분해되어 설계되고, 객체 간 서로 상호작용을 통해 수행됨
- 사용자 정의 데이터 타입 
- 클래스 이름은 대문자로 시작 (ex, NewClass )

class Animal(object): # object 클래스를 상속, 생략 가능
    color = 'white' # 멤버변수

    def __init__(self, name, age = 0, is_hungry = False):  # 생성자, 첫번째 파라미터로 반드시 self 가 있어야 함 
        print('constructor invoked')
        self.name = name  # name 멤버 변수 생성
        self.age = age
        self.is_hungry = is_hungry

    def descript(self):
        print(f'descript method called, my age is {self.age}')

    def set_color(self, color):
        self.color = color

    def get_color(self):
        print(f'{self.name} color is {self.color}')

zebra = Animal('Jeffrey', 2, True)
print(zebra.name, zebra.age, zebra.is_hungry)
zebra.descript()
print(type(zebra))
giraffe = Animal('Bruce', 1, False)
panda = Animal('Chad', 7, True)
print(panda.name, panda.age, panda.is_hungry)
panda.set_color('black & white')
panda.get_color()

 

  • 클래스 선언

class 키워드 사용
클래스 이름은 첫글자가 대문자 (파스칼 표기, ex) NewClass )
클래스 안에는 변수와 함수가 있다.
클래스 내부의 변수를 멤버변수, 클래스 내부의 함수를 메소드 라고 함
함수는 일반적인 함수를 말하는것이고, 메소드는 클래스 내부의 함수를 말함
메소드 인자에는 반드시 self라고 하는 생성자가 첫번째 파라미터로 있다.
self.myval : myval 이라는 멤버 변수 생성 
파이썬의 object 클래스의 기능과 속성을 모두 상속 받는다.

 

 

  • 상속

- 객체 재사용의 한 방법, 다른방법으로는 포함(Composition)이 있음
- 생성자를 제외한 변수와 메소드를 상속 받음

 

class Shape(object):
    def __init__(self, number_of_sides):
        self.number_of_sides = number_of_sides

class Triangle(Shape):  # Shape 클래스를 상속받음
    def __init__(self, side1, side2, side3):
        Shape.number_of_sides = 3   # Shape(부모) 클래스 생성자 초기화
        self.side1 = side1
        self.side2 = side2
        self.side3 = side3

t = Triangle(3,4,5)
print(t.number_of_sides)
print(t.side2)

 

  • Override

- 상속된 부모클래스의 메소드나 속성을 재정의 하는 행위

 

class Employee(object):
    def __init__(self, name):
        self.name = name
    def greet(self, other):
        print('Hello, {0}'.format(other.name))

class Ceo(Employee):
    def greet(self, other):
        print('Get back to work, {0}!'.format(other.name))

ceo = Ceo('Emily')
emp = Employee('Steve')
emp.greet(ceo) # Hello, Emily
ceo.greet(emp) # Get back to work, Steve!

 

https://replit.com/@dhshin38/Tutorial-Python#myclass.py

 

Tutorial Python

A Python repl by dhshin38

replit.com

 

'Python' 카테고리의 다른 글

Python csv 파일  (0) 2022.01.23
Python 엑셀 읽기, 쓰기  (0) 2022.01.23
Python logging 로그  (0) 2022.01.23
Python 예외 처리  (0) 2022.01.23
Python zip파일 압축 및 해제  (0) 2022.01.23

+ Recent posts