priavte

캡슐화 구현

# private
__a = 10            # 일반변수
def getA():         # 일반함수
    return __a
print(getA())

class P :           # 클래스생성
    __a = 10        # private
    b = 20
    def getA(self):
        return self.__a
    def getB(self):
        return self.b
    def setA(self, a):
        self.__a = a
p = P()             # 객체생성
# print(p.__a)        # 접근불가        
print(p.b)
print(p.getA())     # 함수를 통해서는 접근 가능
print(p._P__a)      # private 멤버 접근 방법을 제공. 완벽한 캡슐화는 불가능.
p.setA(100)         # 데이터 바꾸기 위해 setA생성후 100넣어줌
print(p.getA())

캡슐화

# 캡슐화
class Person :
    __name = ""
    __age = 0
    __height = 0.0
    def setName(self, name):
        if len(name) > 10 or name == "":
            print("이름을 바르게 입력하세요")
        else :
            self.__name = name
    def setAge(self, age):
        if age < 1 or age > 140 :
            print("나이를 바르게 입력하세요")
        else :
            self.__age = age
    def setHeight(self, height):
        if height < 40 or height > 200 :
            print("키를 바르게 입력하세요")
        else :
            self.__height = height
    def getName(self):
        return self.__name
    def getAge(self):
        return self.__age
    def getHeight(self):
        return self.__height
kim = Person()
kim.setName("홍길동동주앙펠릭스트라이커")
kim.setAge(150)
kim.setHeight(300)
print("이름 :",kim.getName())
print("나이 :",kim.getAge())
print("키 :",kim.getHeight())

lee = Person()
lee.setName("이순신")
lee.setAge(30)
lee.setHeight(180)
print("이름 :",lee.getName())
print("나이 :",lee.getAge())
print("키 :",lee.getHeight())

생성자 소멸자

init