기록하는삶
[파이썬/python] 이미 존재하는 object(class)에 method 추가하기(functools.partial()) 본문
AI/파이썬(Python)
[파이썬/python] 이미 존재하는 object(class)에 method 추가하기(functools.partial())
mingchin 2022. 1. 26. 00:53728x90
반응형
처음부터 만든 것이 아니라 상속 받아왔거나, import 해와서 Class를 생성하는 코드에 접근은 어렵지만 부분적으로 특정 method를 추가하고 싶은 경우 활용할 수 있는 방법이다.
functools.partial() 함수를 사용하면 되는데, 파이썬 공식 문서에는 다음과 같은 설명이 있다.
추가적으로 args와 kargs를 던지면 해당 인자들을 추가한 새로운 함수를 반환해준다. 이를 이용해 아래처럼 이미 존재하는 Class에 method를 추가해볼 수 있다.
from functools import partial
class Dog():
def __init__(self, name):
self.name = name
d = Dog('Fido')
e = Dog('Buddy')
def bark(self): # normal function
print('Woof! %s is barking' % self.name)
e.bark = partial(bark, e) # pre-bound and stored in the instance
e.bark() # access like a normal method
# 출력: Woof! Buddy is barking
다른 방법으로는 'setattr' 함수를 이용해 아래와 같이 표현할 수도 있다.
def add_method(obj, func):
'Bind a function and store it in an object'
setattr(obj, func.__name__, partial(func, obj))
add_method(d, bark)
d.bark()
# 출력: Woof! Fido is barking
아래의 stack overflow 내용을 가져온 것임을 밝힙니다.
728x90
반응형
'AI > 파이썬(Python)' 카테고리의 다른 글
[파이썬/Python] 경고 알림 무시하기 (0) | 2022.07.11 |
---|---|
[파이썬/Python] Numpy 모듈 (2) (0) | 2022.01.21 |
[파이썬/Python] Numpy 모듈 (1) (0) | 2022.01.21 |
[파이썬/python] 정규표현식(regex), re 모듈, 메타 문자 (0) | 2022.01.20 |
[파이썬/python] collections 모듈, deque, Counter, defaultdict (0) | 2022.01.19 |