320x100
class는 할 수록 익숙해지는 것 같다.
이해를 한다기 보다는 쇠뇌당해서 그게 맞게끔 생각하게끔 되는 느낌이랄까?
나름의 논리가 있고 그게 합리적이게 보이기도, 비합리적이게 보이기도 한다.
# Unit 클래스
class Unit:
'''
속성: 이름, 체력, 방어막, 공격력
'''
# 생성자 (constructor)
# 객체를 생성할 때 호출되는 메서드
def __init__(self,name, hp, shield, demage):
self.name = name
self.hp = hp
self.shield = shield
self.demage = demage
print(f"[{self.name}](이)가 생성 되었습니다.")
# 객체를 출력할 때 호출되는 메서드
def __str__(self):
return f"[{self.name}] 체력: {self.hp} 방어막: {self.hp} 공격력: {self.demage}"
# 프로브 객체 생성
probe = Unit("프로브",20,20,5) # [프로브](이)가 생성 되었습니다.
# 질럿 객체 생성
zealot = Unit("질럿",100,60,16)
# 드라군 객체를 생성
dragoon = Unit("드라군",100,80,20)
print(probe) # [프로브] 체력: 20 방어막: 20 공격력: 5
================================================================
class Unit:
'''
인스턴트 속성: 이름, 체력, 방어막, 공격력
-> 객체마다 다른 값을 가지는 속성
클래스 속성: 전체 유닛 개수
-> 모든 객체가 공유하는 속성
비공개 속성
-> class 안에서만 사용 가능한 속성
'''
count = 0
def __init__(self,name, hp, shield, demage):
self.name = name
self.__hp = hp # __를 붙여줌으로써 비공개로 만든다.
self.shield = shield
self.demage = demage
Unit.count +=1 # class 안에 있지만, 이와같은 count의 위치처럼 같은 def안에 있는게 아니라면 이런식으로 써줘야한다.
print(f"[{self.name}](이)가 생성 되었습니다.")
def __str__(self):
return f"[{self.name}] 체력 : {self.__hp} 방어막 : {self.shield} 공격력 : {self.demage}"
probe = Unit("프로브",20,20,5)
zealot = Unit("질럿",100,60,16)
dragoon = Unit("드라군",100,80,20)
# 인스턴스 속성 수정
probe.demage +=1 # class 밖에서 접근할 때는 class 정의 함수.수정 원하는 인스턴드 속성
#객체명.인스턴트 속성명
print(probe)
# 전체 유닛 개수
print(Unit.count)
# 비공개 속성 접근
probe.__hp = 9999
print(probe)
# 비공개 속성으로 접근해주면 변경은 되었으나, 가시적으로 드러나진 않는다.
# 이를 확인 하기 위해서는 "네임 맹글링"이라는게 필요하다. name mangling
probe._Unit__hp = 9999
print(probe)
이번파트에서 다른건 그래도 어느정도 이해가 되었다.
그러나 비공개 속성 접근과 네임 맹글링은 오.. 난해하다.
원리에 대해서 알려주지 않았을 뿐더러 잘 모르겠다.
===========================================================
class Math:
# 정적 메서드(static method)
# 인스턴스를 만들 필요가 없는 메서드
@staticmethod
def add(x,y):
return x+y
@staticmethod
def sub(x,y):
return x - y
Math.add(3,4)
print(Math.add(3,4))
print(Math.sub(3,4))
300x250
'개발일지 > Python' 카테고리의 다른 글
22.03.02 [파이썬 웹개발] 정규표현식 (0) | 2022.03.02 |
---|---|
22.03.02 [파이썬 웹개발] class 마지막 파트 (0) | 2022.03.02 |
22.03.01 [파이썬 웹개발] map, filter 함수 이용 (0) | 2022.03.01 |
22.03.01 [파이썬 웹개발] 람다 함수 개념정리 (lambda) 매우중요 (0) | 2022.03.01 |
22.02.25 [파이썬 웹 개발] 시간과 분이 있을때 분으로 전환 (0) | 2022.02.25 |