4. 메서드 확인하기
4.1 메소드(Method) 이해하기
4.1.1 인스턴스 메서드(instance method) 확인
- 인스턴스 메소드 정의하기
- 인스턴스의 메소드가 자동으로 self를 통해서 정의되는것을 인스턴스 메소드라고함
- 클래스 내부에서 self를 첫 번째 매개변수로 받아들이며, 이를 통해 해당 메소드가 호출된 인스턴스 자신을 참조할 수 있다
<__main__.Klass_ins object at 0x79db0214f910>
True
{'name': '춘식이', 'age': 5}
{'name': '춘장', 'age': 20}
4.1.2 클래스 메서드 정의
- 클래스 메서드 정의하기
- 데코레이터를 이용해서 파이썬 메소드를 설명함
- 데코레이터(decorator)는 파이썬 함수나 클래스의 기능을 확장하거나 수정할 수 있는 강력한 도구로, 기존의 함수나 클래스를 쉽게 변경하지 않고 기능을 추가하거나 수정할 수 있도록 해준다.
- 여기서는 @classmethod가 데코레이털르 이용한 것이다.
클래스 이름이 바로 전달함(클래스 명을 통해서 값을 직접전달)
mappingproxy({'__dict__': <attribute '__dict__' of 'Klass_cls' objects>,
'__doc__': None,
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'Klass_cls' objects>,
'age': 50,
'name': '클래스',
'set': <classmethod(<function Klass_cls.set at 0x79db1e87a680>)>})
('클래스', 50)
('클래스', 50)
클래스
('클래스', 50)
겨울
{'name': ' 겨울 ', 'age': 15}
4.1.3 정적 메서드 정의
- 정적 메소드 정의하기
('인스턴스', 50)
('클래스', 55)
('클래스', 55)
('인스턴스', 50)
4.2 self / cls 매개변수 이해하기
4.2.1 인스턴스 메서드 정의 이해하기
- 인스턴스 메소드 self 알아보기
<class '__main__.InsKlass'>
<function InsKlass.getname at 0x79db020a7130>
<bound method InsKlass.getname of <__main__.InsKlass object at 0x79db1e69faf0>>
{'__func__', '__self__'}
{'__module__', '__closure__', '__qualname__', '__dict__', '__globals__', '__annotations__', '__name__', '__code__', '__defaults__', '__builtins__', '__kwdefaults__'}
<__main__.InsKlass object at 0x79db1e69faf0>
<__main__.InsKlass object at 0x79db1e69faf0>
<function InsKlass.getname at 0x79db020a7130>
<function InsKlass.getname at 0x79db020a7130>
4.2.2 클래스 메서드 내부 확인하기
- 클래스 메소드 cls 알아보기
클래스
인스턴스
<bound method ClsKlass.getname of <class '__main__.ClsKlass'>>
{'__func__', '__self__'}
{'__module__', '__closure__', '__qualname__', '__dict__', '__globals__', '__annotations__', '__name__', '__code__', '__defaults__', '__builtins__', '__kwdefaults__'}
<class '__main__.ClsKlass'>
<class '__main__.ClsKlass'>
<function ClsKlass.getname at 0x79db020a5fc0>
4.2.3 인스턴스 메서드의 self 매개변수 위치 이해하기
- self 변수를 미지정해서 인스턴스 메소드 알아보기
- s에대한 주소가 지속적으로 self에 전달되는 것을 확인함
__self__ argument <__main__.Self object at 0x79db0214cdf0>
__self__ attribute <__main__.Self object at 0x79db0214cdf0>
{'name': 'Dahl', 'age': 22}
<__main__.Self object at 0x79db0214cdf0>
__self__ attribute <__main__.Self object at 0x79db0214cdf0>
('Dahl', 22)
{'name': 'Dahl', 'age': 22}
<__main__.Self_ object at 0x79db0214da50>
('Dahl', 22)
4.3 외부 함수와 메서드를 동시에 사용하는 패턴 이해하기
4.3.1 외부 함수를 내부 인스턴스 메서드로 사용하기
- 외부 함수를 정의하고 클래스 내부에 할당하기
함수
함수
11
11
1 : <bound method getname of <__main__.Person object at 0x79db0214f6a0>>
2 : <function getname at 0x79db021e7d90>
3 : True
4 : <bound method getage of <__main__.Person object at 0x79db0214f6a0>>
5 : <function getage at 0x79db0211f250>
6 : True
- __ init __ 를 함수로 정의하고 클래스 내에 할당할 경우
- __init__의 경우 별도로 정의하지 말라고 권장하고 있다.
{'name': ' ChunSik ', 'age': 22}
<function __init__ at 0x79db0211dea0>
<function __init__ at 0x79db0211dea0>
4.4 플루언트 인터페이스(Fluent Interface, → 메서드 체이닝)
- Method Chain 처리
하늘과별과 시-윤동주
# intent(5)는 스페이스 5칸 띄우라는 이야기
@ 추가 학습(인스턴스 메소드, set메소드, 클래스 메소드 각각 정리)
1. 인스턴스 메소드
- 정의: 인스턴스 메소드는 클래스의 각 인스턴스에서 호출할 수 있는 메소드.
- 주로 객체의 상태를 조작하거나 정보를 반환하는 데 사용
특징:
- 첫 번째 매개변수로 항상 인스턴스 자신을 참조하는 self를 사용
- 인스턴스를 통해 호출.
- 인스턴스의 상태(속성)을 읽거나 수정할 수 있다.
The value is 10
2. 클래스 메소드
- 정의: 클래스 메소드는 클래스 자체에 바인딩되는 메소드
- 주로 클래스 레벨의 작업을 수행하거나 클래스 변수를 조작하는 데 사용
특징:
- 첫 번째 매개변수로 항상 클래스 자체를 참조하는 cls를 사용
- 클래스 메소드로 선언하려면 @classmethod 데코레이터를 사용해야 한다.
- 클래스 또는 인스턴스를 통해 호출될 수 있다.
- 클래스의 상태(클래스 변수)를 읽거나 수정할 수 있다.
The class variable is Class Level Variable
3. 스태틱 메소드
- 정의: 스태틱 메소드는 클래스나 인스턴스와는 무관하게 동작하는 메소드
- 주로 클래스와 관련된 작업을 수행하지만, 클래스나 인스턴스의 상태를 읽거나 수정하지 않다.
특징:
- 첫 번째 매개변수로 self나 cls를 사용하지 않다.
- 스태틱 메소드로 선언하려면 @staticmethod 데코레이터를 사용해야 한다.
- 클래스 또는 인스턴스를 통해 호출될 수 있다.
- 클래스와 관련된 유틸리티 함수를 정의하는 데 사용된다.
This is a static method
4. setattr 메소드
- 정의: setattr 메소드는 객체의 속성을 동적으로 설정하는 파이썬 내장 함수
특징:
- 객체, 속성 이름, 속성 값을 인자로 받는다.
- 주어진 객체의 속성을 동적으로 설정하거나 업데이트한다.
- 인스턴스, 클래스 어디서든 사용할 수 있다.
20
- 인스턴스 메소드: 인스턴스의 속성이나 다른 인스턴스 메소드를 조작. 첫 번째 매개변수로 self를 받는다.
- 클래스 메소드: 클래스 변수를 조작하거나 클래스 레벨에서 작업을 수행, 첫 번째 매개변수로 cls를 받으며. @classmethod 데코레이터를 사용한다.
- 스태틱 메소드: 클래스나 인스턴스와 관련이 없는 작업을 수행. 첫 번째 매개변수를 받지 않으며, @staticmethod 데코레이터를 사용한다.
'PYTHON-BACK' 카테고리의 다른 글
#파이썬 기초 9일차_2 (0) | 2024.07.09 |
---|---|
#파이썬 기초 9일차_1 (0) | 2024.07.09 |
#파이썬 기초 8일차_1 (1) | 2024.07.08 |
#파이썬 기초 7일차_2 (1) | 2024.07.05 |
#파이썬 기초 7일차_1 (1) | 2024.07.05 |