Python-클래스

DONGHYUN KOO·2020년 8월 15일
0

클래스

  • 클래스는 객체를 표현하기 위한 문법
  • 객체지향 프로그래밍
  • 복잡한 문베를 잘게 나누어 객체로 만들고 객체를 조합해서 문제를 해결
  • 현실 세계의 복잡한 문제를 처리하는데 유용하며 기능을 개성하고 발전 시킬때도 해당 클래스만 수정하면 되므로 유지 보수에도 효율적

클래스

  • 속성체력,마나,물리공격력,주문력

  • 메서드 -지르기 배기

    클래스와 메서드 만들기

      class 클래스 이름:
         def 메서드(self):
             코드
             
      class Person:
         def greeting(self):
            print('Hello')
 
 
### 클래스와 메서드 만들기

다음과 같이 클래스에 ()괄호를 붙인 뒤 변수에 할당함
   -인스턴스 =클래스()
    james =person()
    person 으로 변수 james를 만들었는대 이 james가
    peson의 인스턴스 임
   -클래스는 특정 개념을 표현만 할 뿐 사용하려면 인스턴스를 생성해야 함

매서드 호출하기
매서드는 클래스가 아니라 인스턴스를 통해 호출함
-인스턴스.매서드()
james.greeting()
hello
인스턴스를 통해 호출하는 메서드를 인스턴스 메서드라고 부름

속성 사용하기
속성을 만들떄는 __init__ 매서드 안에서 self.속성에 값을 할당

class 클래스이름:
    def__init__(self):
        self.속성 = 값

class Person:
    def __init__(self):
        self.hello = '안녕'

    def greeting(self):
        print(self.hello)

james = person()
james.greeting()
안녕하세요

인스턴스를 만들때 값 받기
class 클래스이름:
    def __init__(self, 매개변수1, 매개변수2):
        self.속성1 = 매개변수1
        self.속성2 = 매개변수2

class Person:
    def __init__(self, name, age, address):
        self.hello = '안녕하세요.'
        self.name = name
        self.age = age
        self.address = address

    def greeting(self):
        print('{0} 저는 {1}입니다.'.format(self.hello, self.name))

maria = Person('마리아', 20, '서울시 서초구 반포동')
maria.greeting()    # 안녕하세요. 저는 마리아입니다.

print('이름:', maria.name)       # 마리아
print('나이:', maria.age)        # 20
print('주소:', maria.address)    # 서울시 서초구 반포동
안녕하세요. 저는 마리아입니다.
이름: 마리아
나이: 20
주소: 서울시 서초구 반포동

비공개 속성 사용하기
비공개 속성은 __속성과 같이 이름이__로 시작해야함
단,__속성__처럼 밑줄 두 개가 양 옆에 왔을 떄는 비공개 속성이 아니므로 주의해야함

class 클래스 이름:
    def__init__(self,매개변수)
        self.__속성 = 값

class Person:
    def __init__(self, name, age, address, wallet):
        self.name = name
        self.age = age
        self.address = address
        self.__wallet = wallet    # 변수 앞에 __를 붙여서 비공개 속성으로 만듦

maria = Person('마리아', 20, '서울시 서초구 반포동', 10000)
maria.__wallet -= 10000    # 클래스 바깥에서 비공개 속성에 접근하면 에러가 발생함

Traceback (most recent call last):
  File "C:\project\class_private_attribute_error.py", line 9, in <module>
    maria.__wallet -= 10000    # 클래스 바깥에서 비공개 속성에 접근하면 에러가 발생함
AttributeError: 'Person' object has no attribute '__wallet'

비공개 속성은 클래스 안의 매서드에서만 접근할 수 있음
중요한 값인데 바깥에서 함부로 바구면 안될 떄 바공개 속성을 주로 사용함
비공개 속성을 바꾸는 경우는 클래스이 매서드로 한정함

class Person:
    def __init__(self, name, age, address, wallet):
        self.name = name
        self.age = age
        self.address = address
        self.__wallet = wallet    # 변수 앞에 __를 붙여서 비공개 속성으로 만듦

    def pay(self, amount):
        self.__wallet -= amount   # 비공개 속성은 클래스 안의 메서드에서만 접근할 수 있음
        print('이제 {0}원 남았네요.'.format(self.__wallet))

maria = Person('마리아', 20, '서울시 서초구 반포동', 10000)
maria.pay(3000)

0개의 댓글