728x90
반응형
파이썬 클래스
- OOP(객체 지향 프로그래밍), 인스턴스 메소드, 인스턴스 변수
클래스 and 인스턴스 차이 이해
- 클래스는 붕어빵틀 /인스턴스는 클래스에서 사용하는 것
- 네임스페이스 : 객체를 인스턴스화 할 때 저장하는 공간
- 클래스 변수 : 직접 접근 가능, 공유
- 인스턴스 변수 : 객체마다 별도 존재
# 예제1
class Dog: #object 상속
#클래스 속성
species = 'firstdog'
#초기화/인스턴스 속성
def __init__(self, name, age):
self.name = name
self.age = age
# 클래스 정보
print(Dog)
#인스턴스화
a = Dog("mikky", 2)
b = Dog("bady", 3)
c = Dog("mikky", 2)
#비교
print(a == b, id(a), id(b), id(c))
#네임 스페이스
print('dog1', a.__dict__)
print('dog2', b.__dict__)
#인스턴스 속성 확인
print('{} is {} and {} is {}'.format(a.name, a.age, b.name, b.age))
if a.species == 'firstdog' :
print('{0} is a {1}'.format(a.name, a.species))
print(Dog.species)
print(a.species)
print(b.species)
print()
#예제2
# self 의 이해
class SelfTest:
def func1():
print('Func1 called')
def func2(self):
print(id(self))
print('Func2 called')
f = SelfTest()
print(dir(f))
print(id(f))
#f.func1() #예와
f.func2()
SelfTest.func1()
# SelfTest.func2() #예외
SelfTest.func2(f)
print()
#예제3
#클래스 변수, 인스턴스 변수
class Warehouse:
#클래스 변수
stock_num = 0 #재고
def __init__(self,name):
#인스턴스 변수
self.name = name
Warehouse.stock_num += 1
def __del__(self):
Warehouse.stock_num -= 1
user1 = Warehouse('Lee')
user2 = Warehouse('Cho')
print(Warehouse.stock_num)
#Warehouse.stock_num = 50
print(user1.name)
print(user2.name)
print(user1.__dict__)
print('before',Warehouse.__dict__)
print('>>>',user1.__dict__)
del user1
print('after',Warehouse.__dict__)
print()
# 예제4
class Dog2: #object 상속
#클래스 속성
species = 'firstdog'
#초기화/인스턴스 속성
def __init__(self, name, age):
self.name = name
self.age = age
def info(self):
return '{} is {} years old'.format(self.name, self.age)
def speak(self, sound):
return '{} says {}!'.format(self.name, sound)
#인스턴스 생성
c = Dog2('july',4)
d = Dog2('Marry',10)
#메소드 호출
print(c.info())
print(c.speak('Wal Wal'))
print(d.speak('Mung Mung'))
반응형
'Backend > Python' 카테고리의 다른 글
파이썬 - 예외 처리(exception) (0) | 2021.09.16 |
---|---|
파이썬 - 모듈(Module)과 패키지(Package) (0) | 2021.09.16 |
파이썬 함수 - functions(2) (0) | 2021.09.16 |
파이썬 함수 - functions(1) (0) | 2021.09.16 |
파이썬 흐름제어 (3) - while 문 (0) | 2021.09.14 |