객체와 인스턴스
- 객체는 속성(변수)과 행동(함수-메서드)으로 구성된 모든 것.
- 인스턴스는 클래스로 만든 객체를 의미
- 객체(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)
a=[1,2,3]
b=a
print(a==b, a is b)
속성
- 특정 데이터 타입/클래스의 객체들이 가지게 될 상태/데이터를 의미
- 클래스 변수/ 인스턴스 변수가 존재
- 클래스 변수
- 클래스 선언 내부에서 정의
- .으로 접근 및 할당
- 클래스 변수를 변경할 때는 클래스.클래스변수 형식으로 변경
- 인스턴스 변수
- 인스턴스가 가지고 있는 고유의 속성(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)
print(person1.name)
print(Person.count)
Person.blood_type = 'B' 클래스 변수를 변경하면
print(Person.blood_type)
print(person1.blood_type)
print(person2.blood_type)
person1.blood_type = 'O'
print(Person.blood_type)
print(person1.blood_type)
print(person2.blood_type)