im confused with __call__[] method defined within the class. __init__[] is used as constructor, and is called when we create an instance of the object.
when does __call__[] method get called even though we not specify it explicitly...
please help..........
python
0 0
Share
- 5 Contributors
- 4 Replies
- 17K Views
- 3 Years Discussion Span
- Latest Post Latest Post by snippsat
Recommended Answers
Answered by mawe 6 in a
Hi!
__call__[ self[, args...]]
Called when the instance is ``called'' as a function; if this method is defined, x[arg1, arg2, ...] is a shorthand for x.__call__[arg1, arg2, ...].So ...
In [35]: class A: ....: def __init__[self]: ....: print "init" ....: def __call__[self]: ....: print "call" ....: …
All 4 Replies
//bit.ly/3ippyXa"]db = settings["db"]
print[db]
Trường hợp 02. trang trí có và không có đối số
Trình trang trí có thể được triển khai với các lớp trong Python, trong trường hợp này, các lớp cần được gọi giống như một hàm
class Test[]:0
def __init__[self]:
pass def run[self]:
print["Invoking '__call__' method"] __call__ = run
Trang trí với đối số
class Test[]:1
def __init__[self]:
pass def run[self]:
print["Invoking '__call__' method"] __call__ = run
Các phương thức mong đợi các phương thức khác
Một cách khác là sử dụng thể hiện của lớp trong các hàm mong đợi một hàm khác trong các tham số, ví dụ: hàm
class Test[]:5 bên dưới
def __init__[self]:
pass def run[self]:
print["Invoking '__call__' method"] __call__ = run
class Test[]:3
def __init__[self]:
pass def run[self]:
print["Invoking '__call__' method"] __call__ = run
sử dụng nâng cao
Một cách sử dụng nâng cao là liên kết lớp thể hiện với các hàm. Trong ví dụ này, tôi đang sử dụng các tham số để xác định hành vi của cá thể và xuất từng cá thể giống như một hàm
class Test[]:4
def __init__[self]:
pass def run[self]:
print["Invoking '__call__' method"] __call__ = run
Và sử dụng nó như thế nào
class Test[]:5Kết luận
def __init__[self]:
pass def run[self]:
print["Invoking '__call__' method"] __call__ = run
class Test[]:6là một hàm đặc biệt trong Python cho phép sử dụng một thể hiện của lớp giống như một hàm
def __init__[self]:
pass def run[self]:
print["Invoking '__call__' method"] __call__ = run
Kiểu triển khai này có thể hơi khó hiểu và thường không phải là giải pháp tốt nhất. Tuy nhiên, tôi thấy một cách tốt để sử dụng nó