[Python] 기초 - 객체와 인스턴스(OOP)

ITmakesmeSoft·2022년 9월 3일
0

PYTHON [BASIC]

목록 보기
11/13
post-thumbnail
post-custom-banner

객체와 인스턴스

  • 객체는 속성(변수)과 행동(함수-메서드)으로 구성된 모든 것.
  • 인스턴스는 클래스로 만든 객체를 의미
  • 객체(obejct)는 특정 타입의 인스턴스(instance)임.
    • 123은 int의 인스턴스
    • ‘hello’는 str의 인스턴스
    • [1,2,3]은 list의 인스턴스

객체의 특징

  • 타입(type) : 어떤 연산자(operator)와 조작(method)이 가능한가?
  • 속성(attribute) : 어떤 상태(데이터)를 가지는가?
  • 조작법(method) : 어떤 행위(함수)를 할 수 있는가?

기본문법

class Myclass: # 클래스 정의
    pass

my_instance = Myclass() # 인스턴스 생성

my_instance.my_method() # 매서드 호출

my_instance.my_attribute # 속성

객체 비교하기

  • ==
    • 동등한(equal)
    • 변수가 참조하는 객체가 동등한(내용이 같은) 경우 True
    • 두 객체가 같아 보이지만 실제로 동일한 대상을 가리키는 것은 아닐 수도 있음.
  • is
    • 동일한(identical)
    • 두 변수가 동일한 객체를 가리키는 경우 True
a=[1,2,3]
b=[1,2,3]
print(a==b, a is b) # True False

a=[1,2,3]
b=a
print(a==b, a is b) # True True

속성

  • 특정 데이터 타입/클래스의 객체들이 가지게 될 상태/데이터를 의미
  • 클래스 변수/ 인스턴스 변수가 존재
  • 클래스 변수
    • 클래스 선언 내부에서 정의
    • .으로 접근 및 할당
    • 클래스 변수를 변경할 때는 클래스.클래스변수 형식으로 변경
  • 인스턴스 변수
    • 인스턴스가 가지고 있는 고유의 속성(attribute)
    • 생성자( __init__ ) 메서드에서 self.으로 정의
    • 인스턴스가 생성된 이후 .으로 접근 및 할당
  class Person:
		count=0
		blood_type = 'A' # 클래스 변수 정의
		population = 100
		def  __init__(self, name): # 인스턴스 변수 정의
				self.name = name
				Person.count+=1

person1 = Person('지민') # 인스턴스 변수 할당
person2 = Person('지연')
print(person1.blood_type) # 'A' <= 클래스 변수 접근
print(person1.name) # '지민' <= 인스턴스 변수 접근
print(Person.count) # 2


# 클래스 변수 변경
Person.blood_type = 'B' 클래스 변수를 변경하면
print(Person.blood_type) # B
print(person1.blood_type) # B 해당 클래스의 인스턴스가 모두 변경 
print(person2.blood_type) # B

person1.blood_type = 'O' # 만약 인스턴스를 통해 클래스변수를 변경 시
print(Person.blood_type) # B
print(person1.blood_type) # A 해당 인스턴스만 변경되고 
print(person2.blood_type) # B 해당 클래스의 다른 인스턴스는 변경되지 않음
profile
💎 Daniel LEE | SSAFY 8th
post-custom-banner

0개의 댓글