티스토리 뷰
[1] 클래스의 특징
구분 | 예시 |
(1)상속 (Inheritance) 부모클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성하는 것 |
class Person(object): # 초기 상속은 object가 기준임 def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender class Korean(Person): def __init__(self, name, age, gender, salary, hire_date): # 속성 지정 안해도 부모클래스 Person로부터 상속받아 속성, 함수 사용 가능 super().__init__(name, age, gender) # super는 부모꺼 self.salary = salary #self는 내꺼 self.hire_date = hire_date |
(2) 다형성 (Polymorphism) 같은 이름 메소드(비슷한 역할)의 내부 로직을 다르게(다른 결과) 작성 |
def talk(self): # 추상화방법, raise NotImplementedError("Subclass must implement abstract method") class Cat(Animal): def talk(self): return "Meow!" class Dog(Animal): def talk(self): return "Woof! Woof!" animals = [Cat("야옹"), Cat("냐옹"), Dog("멍멍")] for animal in animals: print(animal.name +':'+animal.talk()) # 출력결과 야옹:Meow! 냐옹:Meow! 멍멍:Woof! Woof! |
(3) 가시성 (Visibility) * 캡슐화 또는 정보은닉이라고 함 - 클래스간 간섭/정보공유 최소화 객체의 정보를 볼 수 있는 레벨을 조절하는 것 * 누구나 객체 안에 모든 변수를 볼 필요가 없음 1) 객체를 사용하는 사용자가 임의로 정보 수정 방지 2) 필요 없는 정보에는 접근 할 필요가 없음 3) 만약 제품으로 판매한다면? 소스의 보호 -접근허용도 가능: @property => 함수명을 변수명처럼 사용가능 안에있는 정보를 복사해서 외부로 빼줌(원본은 수정되면 안되니까!) |
class Product(object): pass class Inventory(object): def __init__(self): self.__items = [] # __ : Private 변수로 선언, 다른 객체가 접근 못함 # 외부에서 엉뚱한 값 넣거나 삭제하지 못하게 def add_new_item(self, product): if type(product) == Product: self.__items.append(product) print("new item added") else: raise ValueError("InvaLid Item") def get_number_of_items(self): return len(self.__items) my_inventory = Inventory() my_inventory.add_new_item(Product()) my_inventory.add_new_item(Product()) print(my_inventory.get_number_of_items()) print(my_inventory.__items) # 캡슐화해서 에러남 |
(4) 데코레이터 @ 1) 일등함수 또는 일급객체 - 변수나 데이터 구조에 할당 가능한 객체 - 파라미터로 전달이 가능+리턴 값으로 사용(ex. map의 파라미터로 함수사용) 2) Inner function (내재함수) 함수 내에 또 다른 함수가 존재 * closures: inner funtion을 return값으로 반환 **클로저는 자바스크립에서 많이씀 비슷한 목적을 가진 다양한 변형이 되어있는 함수들을 만들 수있음 3) decorator funtion 복잡한 클로저 함수를 간단하게! |
@property # 함수명을 변수명처럼 사용하여 안에 있는 정보를 외부에 빼줌 def items(self): return self.__items # 보통은 원본수정 방지를 위해 복사본을 반환해줌 print(my_inventory.items) # [<__main__.Product object at 0x000001A90156BB80>, <__main__.Product object at 0x000001A90156BB50>] 1) 파이썬의 함수는 일급함수 => return에 함수 반환 가능 a. 변수에 함수 할당 def square(x): return x*x f = square print(f(5)) # 25 b. 파라미터에 함수 전달 -> 비슷한기능 변형가능한 함수 만들때 사용 def square(x): return x*x def cube(x): return x*x*x def formula(method, argument_list): return [method(i) for i in argument_list] a= [1,2,3,4,5] print(formula(square,a)) # [1, 4, 9, 16, 25] print(formula(cube,a)) # [1, 8, 27, 64, 125] 2) 함수 내에 다른 함수 존재(흔한 구조임) def print_msg(msg): def printer(): print(msg) printer() print_msg("Hello") # Hello ** closer : Inner function을 return 값으로 반환 (같은 용도인데 조금 다를때 사용) def star(func): # func자리에 @star 해준 printer가 들어감 def inner(*args, **kwargs): # *args = ("Hello","T") print(args[1]*30) func(*args, **kwargs) # 위에 inner의 arguments 전달받음 print(args[1]*30) return inner @star def printer(msg, mark): print(msg) printer("Hello","T") #출력 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT Hello TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT * 복합한 클로저 def generate_power(exponent): # exponenet = 2 def wrapper(f): # f = raise_two() def inner(*args): # *args = 7 result = f(*args) # raise_two(7) = 49 return exponent**result # 2**49 return inner return wrapper @generate_power(2) # 데코레이터에도 arguments 넣을 수 있음 def raise_two(n): return n**2 # 7**2 =49 print(raise_two(7)) # 562949953421312 |
※ 출처 : 네이버 부스트코스 - 인공지능 기초 다지기(https://www.boostcourse.org/ai100)
반응형
'AI > Python' 카테고리의 다른 글
[python] 예외처리, 파일 다루기 (0) | 2024.06.18 |
---|---|
[python] 모듈과 프로젝트 (0) | 2024.06.17 |
[프로그래머스 기초] 헷갈리는 개념 정리(문자열, 리스트 : 원본 변경 함수, 새로운 값 return 해주는 함수, 메모리 주소 값 출력, 값 출력) (2) | 2024.06.16 |
[python] 클래스와 객체 -1(속성, 함수, 인스턴스) (2) | 2024.06.16 |
[프로그래머스 기초] Day25 이차원배열 - 기초 문제 풀이 완료 (0) | 2024.06.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 뉴스
- 기초
- 30분
- SQL
- ChatGPT
- 오픽
- 습관
- 줄넘기
- 프로그래머스
- 미라클모닝
- 고득점 Kit
- 운동
- llm
- 실기
- 아침
- 다이어트
- Ai
- 영어회화
- 갓생
- C언어
- 스크랩
- IH
- Python
- 빅데이터 분석기사
- 아침운동
- 오블완
- 경제
- 티스토리챌린지
- opic
- 루틴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함