220309

박찬웅·2022년 3월 9일
0

공부

목록 보기
8/12

오늘 배운것

  • 소멸자 del(self)
  • 클래스자체와 인스턴스 객체에서 메서드나 변수를 호출 하는법에 대해 배웠다.
  • isinstance()

소멸자란 생성자 _init _과 같이 특별한 용도로 클래스 내부에 쓰이는 메서드이다.
객체가 del 로 인해 삭제되었을 때 자동으로 실행된다.

# 클래스내에서 생성자와 소멸자를 구현한 예제를 하나 만들어보자

# [1] 클래스 생성 --> 생성자, 소멸자
# 생성자는 객체가 생성될 때, 소멸자는 객체가 소멸될 때 실행됨
# 생성자는 __init__ 속성, 소멸자는 __del__ 속성을 사용해서 정의한다.

#---------------
class SmartPhone:
    
    #생성자
    def __init__(self, name, price):
        self.name = name
        self.price = price
        print(self.name + "스마트폰 객체가 생성되었습니다")
        print('-'*40)
        print(self.name + "스마트폰의 가격은" + str(price)+ "원입니다.")
        print('-'*40)

    def a_method(self):
        print('a_method가 호출되었습니다')

    #소멸자
    def __del__(self):
        print(self.name + "스마트폰 객체가 소멸되었습니다.")
#---------------

s1= SmartPhone('아이폰', 1200000)
s1.a_method()
del s1 # __del__ 사용됨

같은 클래스안에서 a메소드에 다른 b메서드를 호출하려면 self 를 이용한다.

# 클래스 변수란 무엇이고 이 변수를 클래스 외부에서 사용하는 예제
# 클래스 변수와 사용법에 대함

#[1]: 클래스 생성
#--------------
class MyClass:
	
	#클래스 변수
	a_var= 0

	def a_method(self):
		MyClass_a_var = 6000

#--------------

# [2] 클래스 사용
# 클래스 변수 호출 --> 클래스 변수는 클래스 외부에서 "클래스명.변수명"으로 접근이 가능하다
print('[1] 최초 클래스 변수의 초기 값-->', MyClass.a_var)
#-->0

# 클래스 변수 값 수정
MyClass.a_var = 3000
print('[2] 최초 클래스 변수의 변경-->', MyClass.a_var)
#-->3000

# 클래스 메서드 호출을 통해서 수정
m1 = MyClass()
m1.a_method()
print("[3] 클래스내 메서드 호출을 통해서 클래스변수 값을 수정 -->", MyClass.a_var)
만약 인스턴스를 만들지 않고 m1 객체 없이 MyClass.a_method()를 사용하였다면 에러가 날 것이다.
#self에 할당할 객체가 없기 때문

또 3 번 출력문에서 MyClass.a_var 를 출력하여도 6000으로 출력되지 않는다. m1 객체로 메서드를 사용하였으므로, m1.a_var가 6000 이 된다.

💡 특정 클래스의 인스턴스 객체인지 아닌지 확인하는법 isinstance(instance, class)

isinstance()를 활용하면 m1 인스턴스가 MyClass 클래스의 객체인지 True / False로 반환해준다.

profile
기록장

0개의 댓글