Gọi phương thức trong lớp Python

Trong thư viện có sẵn của

def power[x, n]:
s = 1
while n > 0:
n = n - 1
s = s * x
return s

from functools import partial

power_2 = partial[power, n=2]
power_2[3] # output: 9
power_2[4] # output: 16
6 có một phương thức lấy thuộc tính tên là
def power[x, n]:
s = 1
while n > 0:
n = n - 1
s = s * x
return s

from functools import partial

power_2 = partial[power, n=2]
power_2[3] # output: 9
power_2[4] # output: 16
7, thực thi sau khi lấy hàm

Phương thức __call__ là một phần của các phương thức tích hợp Python còn được gọi là phương thức dunder hoặc ma thuật vì có hai tiền tố và hậu tố gạch dưới trong tên phương thức. Ý tưởng chính của phương thức __call__ là viết một lớp và gọi nó như một hàm. Bạn có thể gọi nó là đối tượng có thể gọi được

Viết một đối tượng có thể gọi được

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

Cách phổ biến nhất là xác định thân hàm được thực thi khi một thể hiện được sử dụng làm hàm

Một cách khác để viết nó là

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

Ở đây, chúng ta có thể khai báo lời gọi phương thức mà không định nghĩa phương thức thân, chỉ tham chiếu đến một phương thức khác, trong trường hợp này là phương thức

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

Bạn có thể sử dụng nó theo cách này

test = Test[]
test[]
>>> Invoking '__call__' method

Một điều cần lưu ý là bản thân đối tượng được sử dụng như một hàm và tất nhiên, đối tượng có thể được sử dụng như một thể hiện đối tượng bình thường

class Test[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
1 là cách viết tắt của ____32 Ví dụ để hiểu cách viết tắt, hãy xem câu lệnh gọi hàm trong Python

________số 8

Do đó, khi chúng ta sử dụng toán tử

class Test[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
3, chúng ta đang gián tiếp gọi phương thức đặc biệt của
class Test[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
4

Cách sử dụng __call__

Để hiểu cách sử dụng hiệu quả các đối tượng được gọi, tôi sẽ đưa ra các ví dụ thực tế về nó. Giữ trong tâm trí của bạn. mục tiêu chính ở đây là sử dụng một thể hiện của lớp như một hàm

Trường hợp 01. hành vi chính của lớp

Một cách phổ biến là xác định hành vi chính của một lớp và sử dụng nó. Trong ví dụ này, chúng tôi sử dụng lớp Cài đặt để lấy giá trị cài đặt theo khóa

def power[x, n]:
s = 1
while n > 0:
n = n - 1
s = s * x
return s

from functools import partial

power_2 = partial[power, n=2]
power_2[3] # output: 9
power_2[4] # output: 16
1

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

def power[x, n]:
s = 1
while n > 0:
n = n - 1
s = s * x
return s

from functools import partial

power_2 = partial[power, n=2]
power_2[3] # output: 9
power_2[4] # output: 16
2

Trang trí với đối số

def power[x, n]:
s = 1
while n > 0:
n = n - 1
s = s * x
return s

from functools import partial

power_2 = partial[power, n=2]
power_2[3] # output: 9
power_2[4] # output: 16
3

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

def power[x, n]:
s = 1
while n > 0:
n = n - 1
s = s * x
return s

from functools import partial

power_2 = partial[power, n=2]
power_2[3] # output: 9
power_2[4] # output: 16
5

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

def power[x, n]:
s = 1
while n > 0:
n = n - 1
s = s * x
return s

from functools import partial

power_2 = partial[power, n=2]
power_2[3] # output: 9
power_2[4] # output: 16
6

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

def power[x, n]:
s = 1
while n > 0:
n = n - 1
s = s * x
return s

from functools import partial

power_2 = partial[power, n=2]
power_2[3] # output: 9
power_2[4] # output: 16
7Kết luận

class Test[]:
def __init__[self]:
pass
def run[self]:
print["Invoking '__call__' method"]
__call__ = run
6 là 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ó

Làm cách nào tôi có thể gọi phương thức trong lớp?

Để gọi một phương thức trong Java, hãy viết tên phương thức theo sau là một bộ dấu ngoặc đơn [], tiếp theo là dấu chấm phẩy [ ; ] . Một lớp phải có tên tệp phù hợp [ Main và Main. Java].

Phương thức __ gọi __ trong Python là gì?

Phương thức __call__ cho phép các lập trình viên Python viết các lớp trong đó các thể hiện hoạt động giống như các hàm và có thể được gọi giống như một hàm .

Bạn có thể gọi các phương thức trong __ init __ không?

Gọi các phương thức khác từ phương thức __init__ . We can call other methods of the class from the __init__ method by using the self keyword.

Chúng ta có thể gọi hàm trong lớp không?

Các hàm có thể được “gọi” bằng mọi ngôn ngữ lập trình . Một lớp có thể gọi được thì độc đáo hơn một chút. Trong JavaScript, cú pháp khởi tạo lớp [cách chúng ta tạo một “thể hiện” của một lớp] liên quan đến từ khóa mới.

Chủ Đề