__Call__ trong Python

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[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
0

Trang trí với đối số

class Test[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
1

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[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
5 bên dưới
class Test[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
3

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[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
4

Và sử dụng nó như thế nào

class Test[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
5Kết luận
class Test[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
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

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ó

Chủ Đề