# 인스턴스 속성
# 객체마다 다르게 가지는 속성

# 클래스 안에서 사용시 -> self.속성명
# 클래스 밖에서 사용시 -> 객체명.속성명

# 클래스 속성
# 모든 객체가 공유하는 속성

# 생성자 밖에서 만든 뒤 사용
# 클래스명.속성명

# 비공개 속성
# 클래스 안에서만 접근 가능한 속성

# 클래스 안에서만 사용 -> self.__속성명
# 클래스 밖에서는 변경 불가능

class Unit:
    """
    인스턴스 속성 : 이름, 체력, 방어막, 공격력
    -> 객체마다 다른 값을 가지는 속성
    
    클래스 속성 : 전체 유닛 개수
    -> 모든 객체가 공유하는 속성

    비공개 속성
    -> 클래스안에서만 사용 가능한 속성
    """
    count = 0
    def __init__(self, name, hp, shield, damage):
        # 인스턴스 속성은 클래스 안에서 self.속성명
        self.name = name
        # 비공개 속성은 클래스 안에서 self.__속성명
        self.__hp = hp
        self.shield = shield
        self.damage = damage
        # 클래스 속성은 객체명.속성명
        Unit.count += 1
        print(f"[{self.name}](이)가 생상 되었습니다.")

    def __str__(self):
        return f"[{self.name}] 체력 : {self.__hp} 방어막 : {self.shield} 공격력 : {self.damage}"

probe = Unit("프로브", 20, 20, 5)
zealot = Unit("질럿", 100, 60, 16)
dragoon = Unit("드라군", 100, 80, 20)

# 클래스 밖에서 인스턴스 속성을 사용할때는 객체명.속성명
probe.shield += 1
print(probe)

# 클래스 밖에서 클래스 속성 사용할때는 객체명.속성명
print(Unit.count)

# 비공개 속성  접근
probe.__hp = 9999
# 네임 맹글링 (name mangling)
probe._Unit__hp = 9999
print(probe)

 

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

BELATED ARTICLES

more