매개 변수화하려는 모듈이 있거나 객체에서 함수를 가져 오려고합니다.파이썬의 파라 메트릭 모듈? 객체에서 함수 가져 오기
나는 그것으로부터 물건을 가져 오기 전에 그것의 행동을 변화시킬 인자를주고 싶다.
한 가지 방법은 내 모듈을 객체로 만들고 그 기능을 사용하는 것입니다. 현재이 작업을 수행합니다.
class MyModule(object):
def __init__(self, previous_sayings):
self.sayings = previous_sayings
__all__ = ['sayhi']
def sayhi(self):
self.sayings.append("hi!")
mod = MyModule(["oh no!"])
sayhi = mod.sayhi
sayhi()
sayhi()
print mod.sayings
이렇게하면 ["oh no!", "hi!", "hi!"]
이 출력됩니다.
그러나이 기능을 사용하면 더 많은 기능을 사용할 수 있습니다.
나는 이런 식으로 뭔가를 할 수 있도록하고 싶습니다 :
mod = MyModule(["oh no!"])
from mod import *
sayhi()
sayhi()
print mod.sayings
이 가능한 같은 것도 있습니까? 기본 모듈에서 상속받을 수 있습니까? 어쨌든 사용자에게 분명히 보여야하는 제약 조건을 추가하면 어떻습니까?
. 자신의 네임 스페이스에 인스턴스 메서드를 가질 수있는 기능을 원한다는 것입니까? –
개체가 실제로 모듈인지 클래스인지는 신경 쓰지 않습니다. 적절한 함수와 값을 로컬 네임 스페이스에 쉽게 가져 와서 전달한 인수에 계속 액세스 할 수있게하려고합니다. 말이 돼? –
@JohnSalvatier : sayhi = mod.sayhi()와 정확히 무슨 문제가 있습니까? 이것은 꽤 일반적인 파이썬 관용구입니다 (특히'lambda x : s.find (x)'또는'functools.partial (str.find, s)'대신's.find'를 전달하는 것과 같은 코드를 포함한다면) while 클래스 인스턴스처럼 동작하는 모듈을 만드는 것은 매우 당연한 일입니다. – abarnert