Tôi đang tìm cách kiểm tra số lượng đối số mà hàm đã cho trong Python. Mục đích là để đạt được một phương pháp mạnh mẽ hơn để vá các lớp của tôi để kiểm tra. Vì vậy, tôi muốn làm một cái gì đó như thế này:Có cách nào để kiểm tra chữ ký của hàm bằng Python không?
class MyClass (object):
def my_function(self, arg1, arg2):
result = ... # Something complicated
return result
def patch(object, func_name, replacement_func):
import new
orig_func = getattr(object, func_name)
replacement_func = new.instancemethod(replacement_func,
object, object.__class__)
# ...
# Verify that orig_func and replacement_func have the
# same signature. If not, raise an error.
# ...
setattr(object, func_name, replacement_func)
my_patched_object = MyClass()
patch(my_patched_object, "my_function", lambda self, arg1: "dummy result")
# The above line should raise an error!
Cảm ơn.
"vá lớp của tôi cho kiểm tra"? Tại sao bạn không sử dụng các đối tượng giả? http://python-mock.sourceforge.net/? –
Tôi mới sử dụng mocks. Tôi "lớn lên" cứng đầu và chắp vá. Tôi đang thực hành và tìm ra khi nào nên sử dụng cái nào, nhưng trong thời gian đó, tôi vẫn có các dự án để hoàn thành, và các bài kiểm tra để viết :). – mjumbewu