Hướng dẫn what is a method in python? - một phương thức trong python là gì?

Bất cứ ai, xin vui lòng, giải thích cho tôi một cách rất đơn giản là "phương pháp" là gì trong Python?

Vấn đề là trong nhiều hướng dẫn Python cho người mới bắt đầu Từ này được sử dụng theo cách như thể người mới bắt đầu đã biết phương pháp là gì trong bối cảnh của Python. Mặc dù tôi tất nhiên quen thuộc với ý nghĩa chung của từ này, tôi không biết thuật ngữ này có nghĩa là gì trong Python. Vì vậy, xin vui lòng, giải thích cho tôi phương pháp "Pythonia" là gì.

Một số mã ví dụ rất đơn giản sẽ được đánh giá rất cao vì một bức tranh có giá trị ngàn từ.

Hỏi ngày 24 tháng 9 năm 2010 lúc 12:07Sep 24, 2010 at 12:07

4

Đó là một chức năng là thành viên của một lớp:

class C:
    def my_method[self]:
        print["I am a C"]

c = C[]
c.my_method[]  # Prints["I am a C"]

Đơn giản như thế!

.

24

Một phương thức là một hàm lấy một thể hiện lớp làm tham số đầu tiên của nó. Phương pháp là thành viên của các lớp học.

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here

Như bạn muốn biết nó có nghĩa là gì trong Python, người ta có thể phân biệt giữa các phương thức bị ràng buộc và không liên kết. Trong Python, tất cả các chức năng [và như vậy cũng là các phương thức] là các đối tượng có thể được truyền xung quanh và "chơi với". Vì vậy, sự khác biệt giữa các phương thức không liên kết và ràng buộc là:

1] Phương pháp bị ràng buộc

# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly

Các phương thức ràng buộc là các phương thức thuộc về các trường hợp của một lớp. Trong ví dụ này,

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
9 được liên kết với trường hợp được gọi là
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
0. Mỗi khi phương thức ràng buộc đó được gọi, phiên bản được truyền dưới dạng tham số đầu tiên một cách tự động - được gọi là
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
1 theo quy ước.

2] Phương pháp không bị ràng buộc

print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do

Khi bạn truy cập

# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
2 [phương thức bên trong một lớp thay vì bên trong một thể hiện], bạn sẽ nhận được một phương thức không liên kết. Nếu bạn muốn gọi nó, bạn phải chuyển thể hiện là tham số đầu tiên vì phương thức không bị ràng buộc với bất kỳ trường hợp nào.

Biết được sự khác biệt đó, bạn có thể sử dụng các hàm/phương thức làm đối tượng, như truyền các phương thức xung quanh. Như một trường hợp sử dụng ví dụ, hãy tưởng tượng một API cho phép bạn xác định chức năng gọi lại, nhưng bạn muốn cung cấp một phương thức là hàm gọi lại. Không có vấn đề gì, chỉ cần vượt qua

# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
3 là cuộc gọi lại và nó sẽ tự động được gọi với phiên bản làm đối số đầu tiên. Điều này sẽ không thể thực hiện được trong các ngôn ngữ tĩnh như C ++ [hoặc chỉ có mánh khóe].

Hy vọng bạn có được điểm;] Tôi nghĩ đó là tất cả những gì bạn nên biết về những điều cơ bản về phương pháp. Bạn cũng có thể đọc thêm về các nhà trang trí

# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
4 và
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
5, nhưng đó là một chủ đề khác.

Đã trả lời ngày 24 tháng 9 năm 2010 lúc 13:40Sep 24, 2010 at 13:40

AndidogandidogAndiDog

66.7K20 Huy hiệu vàng157 Huy hiệu bạc201 Huy hiệu đồng20 gold badges157 silver badges201 bronze badges

2

Trong Python, một phương thức là một hàm có sẵn cho một đối tượng nhất định vì loại đối tượng.method is a function that is available for a given object because of the object's type.

Ví dụ: nếu bạn tạo

# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
6, phương thức
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
7 có thể được áp dụng cho
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
8 vì đó là danh sách Python:
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
9. Tất cả các danh sách có một phương thức
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
7 đơn giản vì chúng là danh sách.

Một ví dụ khác, nếu bạn tạo

print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
1, phương thức
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
2 có thể được áp dụng cho
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
3 đơn giản vì đó là chuỗi Python:
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
4.

Danh sách không có phương thức

print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
2 và chuỗi không có phương thức
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
7. Tại sao? Bởi vì các phương thức chỉ tồn tại cho một đối tượng cụ thể nếu chúng được xác định rõ ràng cho loại đối tượng đó và các nhà phát triển của Python [cho đến nay] đã quyết định rằng các phương pháp cụ thể đó không cần thiết cho các đối tượng cụ thể đó.explicitly defined for that type of object, and Python's developers have [so far] decided that those particular methods are not needed for those particular objects.

Để gọi một phương thức, định dạng là

print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
7 và bất kỳ đối số nào cho phương thức được liệt kê trong dấu ngoặc đơn. Phương pháp này hoàn toàn tác động lên đối tượng được đặt tên và do đó một số phương thức không có bất kỳ đối số đã nêu nào vì chính đối tượng là đối số cần thiết duy nhất. Ví dụ:
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
4 không có bất kỳ đối số được liệt kê nào vì đối số duy nhất được yêu cầu là chính đối tượng,
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
3.the object itself is the only necessary argument. For example,
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
4 doesn't have any listed arguments because the only required argument is the object itself,
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
3.

Một điểm chung của sự nhầm lẫn liên quan đến những điều sau đây:

import math
math.sqrt[81]

import math
math.sqrt[81]
0 có phải là phương pháp của đối tượng
import math
math.sqrt[81]
1 không? Không. Đây là cách bạn gọi hàm
import math
math.sqrt[81]
0 từ mô -đun
import math
math.sqrt[81]
1. Định dạng đang được sử dụng là
import math
math.sqrt[81]
4, thay vì
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
7. Nói chung, cách duy nhất để phân biệt giữa hai định dạng [trực quan] là xem xét phần còn lại của mã và xem phần đó trước khoảng thời gian [
import math
math.sqrt[81]
1,
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
8,
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
3] được định nghĩa là một đối tượng hoặc mô -đun.No. This is how you call the
import math
math.sqrt[81]
0 function from the
import math
math.sqrt[81]
1 module. The format being used is
import math
math.sqrt[81]
4, instead of
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
7. In general, the only way to distinguish between the two formats [visually] is to look in the rest of the code and see if the part before the period [
import math
math.sqrt[81]
1,
# Create an instance of C and call method[]
instance = C[]

print instance.method # prints ''
instance.method[1, 2, 3] # normal method call

f = instance.method
f[1, 2, 3] # method call without using the variable 'instance' explicitly
8,
print C.method # prints ''
instance = C[]
C.method[instance, 1, 2, 3] # this call is the same as...
f = C.method
f[instance, 1, 2, 3] # ..this one...

instance.method[1, 2, 3] # and the same as calling the bound method as you would usually do
3] is defined as an object or a module.

Đã trả lời ngày 5 tháng 3 năm 2016 lúc 10:14Mar 5, 2016 at 10:14

Kevin Markhamkevin MarkhamKevin Markham

5.3081 Huy hiệu vàng25 Huy hiệu bạc36 Huy hiệu đồng1 gold badge25 silver badges36 bronze badges

0

Xin lỗi, nhưng-trong ý kiến ​​của tôi-Richiehindle hoàn toàn đúng khi nói phương pháp đó ...

Đó là một chức năng là thành viên của một lớp.

Dưới đây là ví dụ về một chức năng trở thành thành viên của lớp. Kể từ đó, nó hoạt động như một phương pháp của lớp. Hãy bắt đầu với lớp trống và hàm bình thường với một đối số:

>>> class C:
...     pass
...
>>> def func[self]:
...     print 'func called'
...
>>> func['whatever']
func called

Bây giờ chúng tôi thêm một thành viên vào lớp

import math
math.sqrt[81]
9, đây là tham chiếu đến hàm. Sau đó, chúng ta có thể tạo phiên bản của lớp và gọi phương thức của nó như thể nó được xác định bên trong lớp:

>>> C.func = func
>>> o = C[]
>>> o.func[]
func called

Chúng ta cũng có thể sử dụng cách gọi thay thế phương thức:

>>> C.func[o]
func called

>>> class C:
...     pass
...
>>> def func[self]:
...     print 'func called'
...
>>> func['whatever']
func called
0 thậm chí còn biểu hiện theo cách tương tự như phương thức lớp:

>>> o.func

Và chúng ta có thể thử cách tiếp cận đảo ngược. Hãy xác định một lớp và đánh cắp phương thức của nó là một hàm:

>>> class A:
...     def func[self]:
...         print 'aaa'
...
>>> a = A[]
>>> a.func

>>> a.func[]
aaa

Cho đến nay, nó trông giống nhau. Bây giờ chức năng ăn cắp:

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
0

Sự thật là phương pháp không chấp nhận đối số 'bất cứ điều gì':

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
1

IMHO, đây không phải là đối số chống lại phương thức là một hàm là thành viên của một lớp.

Sau đó, tìm thấy câu trả lời của Alex Martelli về cơ bản nói như vậy. Xin lỗi nếu bạn xem xét nó trùng lặp :] the Alex Martelli's answer that basically says the same. Sorry if you consider it duplication :]

Đã trả lời ngày 16 tháng 7 năm 2012 lúc 21:10Jul 16, 2012 at 21:10

PEPRPEPRpepr

Huy hiệu vàng 19.4K1414 gold badges72 silver badges134 bronze badges

1

//docs.python.org/2/tutorial/classes.html#method-objects

Thông thường, một phương thức được gọi ngay sau khi nó bị ràng buộc:

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
2

Trong ví dụ MyClass, điều này sẽ trả về chuỗi 'Hello World'. Tuy nhiên, không cần thiết phải gọi một phương thức ngay lập tức: X.F là một đối tượng phương thức và có thể được lưu trữ và gọi sau đó. Ví dụ:

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
3

Sẽ tiếp tục in Hello World cho đến cuối thời gian.

Điều gì chính xác xảy ra khi một phương thức được gọi là? Bạn có thể nhận thấy rằng x.f [] được gọi mà không có đối số ở trên, mặc dù định nghĩa hàm cho f [] đã chỉ định một đối số. Điều gì đã xảy ra với cuộc tranh luận? Chắc chắn Python nêu ra một ngoại lệ khi một hàm yêu cầu một đối số được gọi mà không có bất kỳ - ngay cả khi đối số không thực sự được sử dụng ...

Trên thực tế, bạn có thể đã đoán câu trả lời: Điều đặc biệt về các phương thức là đối tượng được truyền như là đối số đầu tiên của hàm. Trong ví dụ của chúng tôi, cuộc gọi x.f [] hoàn toàn tương đương với myClass.f [x]. Nói chung, gọi một phương thức có danh sách N đối số tương đương với việc gọi hàm tương ứng với danh sách đối số được tạo bằng cách chèn đối tượng Phương thức trước đối số đầu tiên.

Nếu bạn vẫn không hiểu cách thức hoạt động của các phương pháp, một cái nhìn về việc triển khai có thể làm rõ vấn đề. Khi một thuộc tính thể hiện được tham chiếu không phải là một thuộc tính dữ liệu, lớp của nó được tìm kiếm. Nếu tên biểu thị thuộc tính lớp hợp lệ là đối tượng hàm, đối tượng phương thức được tạo bằng cách đóng gói [con trỏ đến] đối tượng thể hiện và đối tượng hàm chỉ được tìm thấy cùng nhau trong một đối tượng trừu tượng: đây là đối tượng phương thức. Khi đối tượng Phương thức được gọi với danh sách đối số, một danh sách đối số mới được xây dựng từ đối tượng phiên bản và danh sách đối số và đối tượng hàm được gọi với danh sách đối số mới này.

Đã trả lời ngày 31 tháng 10 năm 2013 lúc 6:10Oct 31, 2013 at 6:10

Acmerfightacmerfightacmerfight

7351 Huy hiệu vàng7 Huy hiệu bạc1 gold badge7 silver badges10 bronze badges

Nếu bạn nghĩ về một đối tượng tương tự như một danh từ, thì một phương thức tương tự như một động từ. Sử dụng một phương thức ngay sau một đối tượng [nghĩa là một chuỗi hoặc danh sách] để áp dụng hành động của phương thức cho nó.

Đã trả lời ngày 3 tháng 3 năm 2019 lúc 7:21Mar 3, 2019 at 7:21

Để hiểu các phương pháp, trước tiên bạn phải nghĩ về mặt lập trình hướng đối tượng: Hãy lấy một chiếc xe làm lớp. Tất cả những chiếc xe đều có những điểm chung và những thứ làm cho chúng trở nên độc đáo, ví dụ như tất cả các xe đều có 4 bánh xe, cửa ra vào, vô lăng .... nhưng chiếc xe cá nhân của bạn [hãy gọi nó, my_toyota] có màu đỏ, đi từ 0-60 in 5.6S Xa hơn Xe hiện đang được đặt tại nhà tôi, các cánh cửa bị khóa, thân cây trống ... Tất cả những thuộc tính của ví dụ của My_Toyota. Your_honda có thể đang trên đường, thân cây đầy đồ tạp hóa ...

Tuy nhiên có những điều bạn có thể làm với chiếc xe. Bạn có thể lái nó, bạn có thể mở cửa, bạn có thể tải nó. Những điều bạn có thể làm với một chiếc xe là các phương pháp của chiếc xe và chúng thay đổi một thuộc tính của trường hợp cụ thể.

Như mã giả bạn sẽ làm:

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
4

để thay đổi vị trí từ nhà của tôi sang cửa hàng hoặc

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
5

Bằng cách này, thân cây hiện được nạp [sữa, bơ, bánh mì].

Vì một phương pháp như vậy thực tế là một hàm hoạt động như một phần của đối tượng:

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
6

Mã sau đó sẽ là:

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
7

Đã trả lời ngày 25 tháng 11 năm 2019 lúc 21:04Nov 25, 2019 at 21:04

Một phương thức là một hàm ‘thuộc về một đối tượng và có một tên cụ thể:

class C:
    def method[self, possibly, other, arguments]:
        pass # do something here
8

trong đó

>>> class C:
...     pass
...
>>> def func[self]:
...     print 'func called'
...
>>> func['whatever']
func called
1 là một số đối tượng [đây có thể là một biểu thức] và
>>> class C:
...     pass
...
>>> def func[self]:
...     print 'func called'
...
>>> func['whatever']
func called
2 là tên của một phương thức được xác định bởi loại đối tượng.

Đó là giá trị để lưu ý: Chúng tôi gọi phương thức như bất kỳ chức năng nào khác. Nhiều hơn có thể được tìm thấy trong hướng dẫn Python.

Đã trả lời ngày 17 tháng 11 năm 2021 lúc 20:22Nov 17, 2021 at 20:22

Phương thức vs hàm python là gì?

Sự khác biệt giữa các phương thức Python so với các phương thức chức năng được liên kết với các đối tượng của lớp mà chúng thuộc về. Các chức năng không được liên kết với bất kỳ đối tượng. Chúng ta có thể gọi một chức năng chỉ bằng tên của nó. Các chức năng hoạt động trên dữ liệu bạn truyền cho chúng dưới dạng đối số.Methods are associated with the objects of the class they belong to. Functions are not associated with any object. We can invoke a function just by its name. Functions operate on the data you pass to them as arguments.

Phương pháp trong chức năng là gì?

Phương thức và một hàm là giống nhau, với các thuật ngữ khác nhau.Một phương pháp là một thủ tục hoặc chức năng trong lập trình hướng đối tượng.Chức năng là một nhóm mã có thể tái sử dụng có thể được gọi là bất cứ nơi nào trong chương trình của bạn.Điều này loại bỏ sự cần thiết phải viết cùng một mã nhiều lần.a procedure or function in object-oriented programming. A function is a group of reusable code which can be called anywhere in your program. This eliminates the need for writing the same code again and again.

Phương pháp python lớp phương pháp là gì?

Phương thức lớp là một phương thức được liên kết với lớp và không phải là đối tượng của lớp.Họ có quyền truy cập vào trạng thái của lớp vì nó lấy một tham số lớp trỏ đến lớp chứ không phải thể hiện đối tượng.Nó có thể sửa đổi một trạng thái lớp sẽ áp dụng trên tất cả các trường hợp của lớp.a method which is bound to the class and not the object of the class. They have the access to the state of the class as it takes a class parameter that points to the class and not the object instance. It can modify a class state that would apply across all the instances of the class.

Phương thức trong mã là gì?

Một phương thức là một khối mã chỉ chạy khi nó được gọi.Bạn có thể truyền dữ liệu, được gọi là tham số, vào một phương thức.Các phương pháp được sử dụng để thực hiện một số hành động nhất định và chúng còn được gọi là chức năng.Tại sao sử dụng phương pháp?a block of code which only runs when it is called. You can pass data, known as parameters, into a method. Methods are used to perform certain actions, and they are also known as functions. Why use methods?

Chủ Đề