- 클래스
- 데이터를 포함한 데이터구조(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
'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 |