본문 바로가기

패스트캠퍼스_컴공전공필수+인공지능/0원 챌린지

3/03(금) 클래스 실습(복습)

class student:  # 클래스
  count = 0
  @classmethod  #클래스 메소드 , @classmethod 데코레이터 , 정적 메소드와 비슷 , 클래스에서 위에 선언한 클래스 변수 (=멤버변수) 사용 할 수 있음.
  def cmethod(cls): # 매개변수의 첫번째 인자 -> 클래스 객체 받음 , cls 로 받음
    print("클래스 메소드")
    print(cls.count)
  
  @staticmethod # 정적 메소드 , @staticmethod 데코레이터 , 클래스에서 위에 선언한 클래스 변수 (=멤버변수) 사용 못함.
  def smethod():
    print("정적 메소드")

student.cmethod() # 클래스 메소드 -> 메소드 밖에서 정의된 클래스 변수 사용함
student.smethod() # 정적 메소드 -> 메소드 밖에서 정의된 클래스 변수 사용못함​
class human:  # 클래스 생성
  def __init__(self, height, age):  # 생성자 __init__ : 해당 (클래스->)인스턴스 없어질 때 실행, 메서드(함수) 생성할 때, class-> self 가 첫번째 매개변수 인자 -> 변수 선언 시 self.~~ 형태로 만들어야 외부(메소드 밖) 사용 가능 
    self.height = height
    self.age = age
  def how_old(self):
    print(self.age, "살 입니다")
  def how_tall(self):
    print(self.height, 'cm 입니다')
  def __del__(self):  # 소멸자 __del__ : 해당 (클래스->)인스턴스 없어질 때 실행
    print('삭제되었다')

seunghyun = human(180,31) # 클래스를 통해 인스턴스 생성 , 생성자에서 (self, height, age) 가 매개변수이므로 self 는 무시, 나머지 heigh, age 값을 같이 넣어서 생성해줘야한다. => 생성자 실행

print(seunghyun.height) # 클래스->인스턴스-->~.변수 형태로 변수 접근
print(seunghyun.age)
seunghyun.how_old() # 메서드 접근 방법 ; 인스턴스.메서드()

del seunghyun # 인스턴스 삭제됨 => 클래스에서 정의된 소멸자 실행

# 위에서 del 로 인스턴스 삭제 -> 더이상 seunghyun 존재하지 않으므로 아래 와 같이 불러오면 에러남
print(seunghyun.height) # 클래스->인스턴스-->~.변수 형태로 변수 접근
print(seunghyun.age)
seunghyun.how_old() # 메서드 접근 방법 ; 인스턴스.메서드()
def plus(a,b):  # 함수 정의
  return a+b

type(plus)  # type() 함수 -> 타입 알 수 있음
class human:
    def __init__(self): # 생성자
        self.__age = 31 # __변수 형태 : 은닉 => 해당 메소드에서만 접근 가능함

    @property # 은닉된 변수 접근하기 위한 getter (가져오다) -> @property 데코레이터
    def age_getter(self):   #getter
        return self.__age # 생성자에서 은닉됐지만 가져올 수 있다.

    @age_getter.setter  # getter 만 설정하는 데코레이터 존재 -> setter (은닉된 변수 건들기, 설정하다) 는 getter 메소드 이름. setter 로 데코레이터를 줘야한다.
    def age_setter(self, value): #setter
        self.__age = value  # 은닉된 변수 조작하기.

seunghyun = human() # 클래스 -> 객체,인스턴스 생성
seunghyun.age_setter = 25252  # 은닉된 것 건들이기
seunghyun.age_getter  # 은닉된 것 가져오기
seunghyun.__age # 그냥은 은닉된 __age 접근 못함 -> 따라서 에러 남
mypi = 3.14
# 원의 면적 반지름 * 반지름 * 3.14
def area(r):
    return mypi * r * r
# 자체적으로 실행
if __name__ == "__main__":  #실행하고 있는 코드 (.py) 의 파일 이름이 __main__ 이 된다.
    print(round(area(12),2))
    print(area(10))

 


* 필수 삽입 링크 : http://bit.ly/3Y34pE0

 

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

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

fastcampus.co.kr

<사진 2장>
 
 


 

 

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