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) + "이야.")
 
 
 
= 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()

 

블로그 이미지

Link2Me

,