다시 입력하지 않고 기능/방법을 대체. 기본적으로 나는 10 개의 인자를 가진 함수를 가진 클래스를 가지고 있고, 그것을 확장하는 많은 클래스를 가질 생각이다. 그래서 매번 인자를 타이핑하지 않기를 바랄 것이다. 제발 모든 주장의 목록/사전을 전달하라고 말하지 마세요.파이썬은 "자기, X, Y, Z"를 다시 입력하지 않고 f를 재정의하는 것이 가능 I가</p> <pre><code>class A: def f(self, x, y, z): # do something with x, y, z </code></pre> <p>이 함수 인수를 예
1
A
답변
3
아니요. 재정의 된 함수가 동일한 인수를 갖도록하려면 동일한 인수를 입력해야합니다. 다른 인수를 갖도록 재정의 할 수 있으므로 같은 인수를 갖기를 마술처럼 알 수있는 방법이 없습니다.
이 문제를 피하는 유일한 방법은 *args
및/또는 **kwargs
을 사용하는 것입니다.하지만 그렇게하고 싶지는 않은 것으로 보입니다. (또한,이되지 않습니다 꽤 실제로 잘못된 인수로 호출하면 여기서/오류가 발생하는 경우의 관점에서 오른쪽 인수 함수를 정의한다. 동일) 그것은 진정한 최우선이 아니다
2
class A:
def facade_f(self, x, y, z):
self._real_f({'x': x, 'y': y, 'z': z})
def _real_f(self, params):
# do something with params['x'], params['y'], params['z']
class B(A):
def _real_f(self, params):
# do something with params['x'], params['y'], params['z']
, 그러나 모든 명명 된 매개 변수로 멋진 인터페이스를 노출하고 facade_f
메서드에서 해당 유형과 값을 확인할 수 있으며 확장 할 때 거의 입력하지 않아도됩니다.
근무 예 :
class A:
def facade_f(self, x, y, z):
self._real_f({'x': x, 'y': y, 'z': z})
class B(A):
def _real_f(self, params):
print params['x'], params['y'], params['z']
B().facade_f(1, 2, 3)
관련 문제
- 1. 정렬 된 배열의 모든 쌍 (x, y)을 찾아서 x + y <z
- 2. X, Y, Z 점과면 도면
- 3. 3d 그래프 (x, y, z)
- 4. 비트 AND AND x & y = z, x =?
- 5. 프로그래밍 방식으로 X w/5 (Y || Z)를 "X Y"~ 5 || "X Z"~ 5
- 6. 값이 누락 된 pcolormesh? X, Y, Z</p> <p>다음 코드 :
- 7. translate3d (x, y, z)를 사용하여 이동하는 요소의 현재 (x, y, z)를 찾을 수 있습니까?
- 8. "isset ($ x)? $ y : $ z"는 무엇을 의미합니까?
- 9. prolog, test (X, Y, Z) : - Y는 X + Z입니다.
- 10. 루비 이상 : x == y && [x, y] .uniq == [x, y]
- 11. Func <x,y>과 방법 (x, y)의 차이점은 무엇입니까?
- 12. <div id="whatever"><a class="action-add" href="/x/y/z">add</a></div>에서 클릭 이벤트를 잡는 방법
- 13. x, y 및 z 열의 값을 인쇄하려면
- 14. matlab에 : 함수 @위한 하나 희미 정수 (X, Y, Z)는
- 15. 푸의 MATLAB의 의미 란 (X, Y, Z)
- 16. 주어진 X, Y 및 Z 벡터
- 17. (x, y, z)의 DirectX 텍스트
- 18. x + y-z - 1과 1 사이
- 19. Telerik RadGrid는 마지막 페이지에 Y 데이터 행만있는 경우에도 항상 X 행을 표시합니다. 여기서 Y <X
- 20. 컨투어 (X, Y)
- 21. 간격 비교 (예 : x <variable <y)가 대부분의 '주류'언어에서 지원되지 않는 이유는 무엇입니까?
- 22. .m 파일에서 매개 변수를 전역 변수로 사용하는 방법은 무엇입니까? 여기</p> <pre><code>function y = f(x,a) global a y = f1(x); function y = f1(x) global a y = x + a; </code></pre> <p>, 나는 변수 '는'하위 기능 'F1'에서 호출 할 수있는 전역 변수로 사용되는 원하는 :
- 23. 3D 게임에서 대상의 X, Y, Z 위치와 C# X Y 창 관계
- 24. 삼항 연산 "? :"의 반환 값은 무엇입니까?</p> <p>이 후 X, Y, Z 값의 새로운 기능 : :
- 25. C# : (float) (x/y)와 x/(float) y 사이에 차이가 있습니까?</p> <pre><code>float x = ... ; int y = ... ; var result = (float) (x/y); Versus: var result = x/(float)y; </code></pre> <p>은 어디에서이 특정 주제에 대한 자세한 내용을보실 수 있습니다 : 다음 표현식 (C#에서) 해당하는 경우
- 26. ConfigParser가있는 새 줄?</p> <pre><code><br> [ section one ]<br> one = Y,Z,X <br><br> [EG 2]<br> ias = X,Y,Z<br> </code></pre> <p>내 프로그램을 잘 읽고이 값을 처리하는 작업 :
- 27. <img> x 및 y 원점을 찾기위한 대안
- 28. 캐스팅 문제 x <char> ~ x <t>
- 29. 3d 점 (x, y, z)으로 구체에 2 차원 격자 점 (x, y)을 매핑하는 방법
- 30. 파이썬리스트에서 반복하기 - iterator를 복사하거나 사용합니까? 내가</p> <pre><code>for x in a: do something with x </code></pre> <p>이 <code>x</code>에 복사 <code>a</code>에서 첫 번째리스트가 작성하는 경우
귀하의 질문에 따라 모든 arguments'의 목록/사전을 통과'에 문제가 – avasal
귀하의 코드 예제는 최우선이 없습니다. 아마도 당신은 당신의 질문을 더 명확하게하기 위해'클래스 B (A)'를 도입 할 수 있습니다. –