728x90
Class 에 대한 개념을 제대로 잡고 싶다면 "자바의 정석" 저자 남궁성의 유투브 강좌 6장, 7장을 들으면 된다.
https://www.youtube.com/watch?v=CXuA31XcBZ0&t=25s
객체 지향의 개념은 여러 언어에서 다 사용하고 있으므로, 파이썬에서 어떤 문법 구조로 사용하는지만 파악하면 된다.
ㅇ 필드 : 객체가 가지고 있는 성질 = 객체가 가지고 있는 변수
ㅇ 메서드 : 객체가 할 수 있는 행동 = 객체가 할 수 있는 함수
ㅇ 인스턴스 이름 = 클래스 이름()
- 인스턴스.변수
- 인스턴스.메소드
인스턴스 속성 : 객체마다 다른 값을 가지는 속성
클래스 속성 : 모든 객체가 공유하는 속성
비공개 속성 : 클래스 안에서만 사용하는 속성 (ex, self.__age)
# 클래스를 작성하기 위해서는 class 키워드 사용하여 새로운 클래스를 작성한다.
class Person:
def __init__(self, name, age): # 생성자를 객체 초기화할 때 사용된다.
self.name = name
self.age = age
def __del__(self):
print("소멸자 호출")
# 객체를 출력할 때 호출되는 메소드
def __str__(self):
return f"[이름 : {self.name}, 나이 : {self.age}]"
def say_hello(self):
print("안녕, 나는 " + self.name + "이야.")
def say_hi(self, to_name):
print("안녕! " + to_name + ", 나는 " + self.name + "이야.")
def introduce(self):
print("내 이름은 " + self.name + " 그리고 나이는 " + str(self.age) + "이야.")
# class 상속
class Police(Person):
def arrest(self, to_arrest):
print("넌 체포됐다, " + to_arrest)
class Programmer(Person):
def program(self, to_program):
print("이번엔 이걸 만들어야겠다 : " + to_program)
def introduce(self): # 오버라이딩
print("내 성명은 " + self.name + " 이고, 나이는 " + str(self.age) + "이야.")
p = Person("홍길동", 25)
p.say_hello()
p.say_hi("소영")
print(p)
p1 = Police("이순신", 32)
p1.introduce()
p2 = Programmer("강감찬", 27)
p2.introduce()
p2.program("차계부")
|
다형성
# 다형성
class Animal:
legs = 0
def walk(self):
return ""
class Dog(Animal):
legs = 4
def walk(self):
return "살랑살랑"
class Human(Animal):
legs = 2
def walk(self):
return "뚜벅뚜벅"
maltese = Dog()
gildong = Human()
print(maltese.walk())
print(gildong.walk())
|
파이썬 객체 적용
파이썬에서는 객체 단위로 정보를 관리한다. 그리고 그 객체는 다음과 같은 속성을 가지고 있다.
• 값(Value) : 객체에 담긴 내용
• 유형(Type) : 객체의 종류
# 리스트 [1, 2, 3]이 담긴 변수 nums를 선언
nums = [1,2,3]
# nums의 값, 유형을 출력
print(nums)
print(type(nums))
# 리스트의 .append() 메서드를 이용해서 숫자 4를 리스트 nums에 추가
nums.append(4)
print(nums)
|
한 객체의 메서드에서 그 객체의 필드를 참조할 땐 self를 이용해서 참조해야 한다.
self: 메서드라면 가져야하는 첫 번째 매개변수
Q : 왜 self가 필요할까?
A : self는 객체 자신을 의미하며, 메서드가 호출될 때 self 자리에 객체 자신을 인자에 넣는다.
# 클래스 Bbread(붕어빵)을 만들어봅시다.
# Bbread의 필드 taste를 생성하고, "밀가루"를 대입해봅시다.
# Bbread의 메서드 eat()를 생성해봅시다. 이 메서드는 taste, "맛이 나요!"를 출력합니다.
# taste의 값이 "밀가루"라면 "밀가루 맛이 나요!" 가 출력됩니다.
class Bbread:
taste = "밀가루"
def eat(self):
print(self.taste, "맛이 나요!")
# 클래스 Bbread의 인스턴스 redBean과 choux를 만들어봅시다.
redBean = Bbread()
choux = Bbread()
# 객체 redBean의 필드 taste를 "팥"으로 바꿔줍시다
redBean.taste = "팥"
# 객체 choux의 필드 taste를 "슈크림"으로 바꿔줍시다
choux.taste ="슈크림"
# 객체 redBean의 메서드 eat()를 실행해봅시다
redBean.eat()
# 객체 choux의 메서드 eat()를 실행해봅시다
choux.eat()
|
728x90
'파이썬 > Python 기초' 카테고리의 다른 글
[파이썬기초] 리스트 슬라이싱 (0) | 2021.03.28 |
---|---|
[파이썬기초] import 로 모듈 가져오기 (0) | 2021.01.01 |
[파이썬기초] Tuple(튜플) (0) | 2021.01.01 |
[파이썬 기초] dictionary (0) | 2021.01.01 |
[파이썬 기초] 반복문 for, while (0) | 2020.12.29 |