Nếu các lớp của bạn định nghĩa một phương thức __init__
, hãy đảm bảo cung cấp tất cả các đối số cần thiết khi khởi tạo chúng
Các phương thức trong ví dụ được truy cập trên các thể hiện của các lớp
Nếu bạn đã định nghĩa một phương thức tĩnh, bạn không cần phải khởi tạo lớp để gọi phương thức từ một lớp khác
Chúng tôi đã sử dụng trình trang trí @staticmethod
để xác định một phương thức tĩnh trong lớp
Phương thức tĩnh không nhận đối số ngầm định đầu tiên [self
] và có thể được gọi trên lớp hoặc một thể hiện của lớp
Lưu ý rằng chúng ta không phải tạo một thể hiện của lớp A
để có thể gọi method_a
Bạn cũng có thể gọi method_a
và lưu trữ kết quả trong một biến lớp trong lớp khác
class A:
def method_a[self, a, b]:
return a + b
class B:
result = A[].method_a[15, 20]
print[B.result]
Biến lớp
class A:
def __init__[self, name, age]:
self.name = name
self.age = age
def method_a[self, a, b]:
return a + b
class B:
def __init__[self, name, age]:
self.name = name
self.age = age
def method_b[self, a, b]:
return A[self.name, self.age].method_a[a, b]
b1 = B['bobby', 30]
print[b1.method_b[10, 15]]
3 được chia sẻ bởi tất cả các phiên bản của lớp B
Dưới đây là một ví dụ về khởi tạo các lớp cũng định nghĩa một phương thức __init__[]
class A:
def __init__[self, name, age]:
self.name = name
self.age = age
def method_a[self, a, b]:
return a + b
class B:
def __init__[self, name, age]:
self.name = name
self.age = age
def method_b[self, a, b]:
return A[self.name, self.age].method_a[a, b]
b1 = B['bobby', 30]
print[b1.method_b[10, 15]]
Chúng tôi đã phải vượt qua các đối số cần thiết khi khởi tạo lớp A
trong lớp B
Bạn cũng có thể truyền một thể hiện của lớp A
làm đối số khi khởi tạo lớp B
Lớp B
lấy một thể hiện của lớp A
làm đối số trong phương thức __init__[]
của nó
Bây giờ chúng tôi có thể truy cập phiên bản trong method_b
để gọi method_a
Cách gọi một Hàm trong một Lớp bằng Python
Để gọi một chức năng trong một lớp
- Xác định
self
làm đối số đầu tiên mà phương thức nhận - Tạo một thể hiện của lớp
- Gọi hàm bằng cách sử dụng
self
, e. g.A
7
Lớp A
8 có 3 phương thức
__init__[]
- được sử dụng để tạo một thể hiện của lớpB
0 - gọi phương thứcB
1 và in một thông báoB
1 cập nhật thuộc tínhB
3 trên phiên bản hiện tại
Khi một lớp định nghĩa phương thức __init__[]
, phương thức này được gọi khi một thể hiện được tạo
Phương thức __init__[]
không được phép trả lại bất cứ thứ gì
Nếu bạn truyền đối số khi khởi tạo một lớp, thì đối số sẽ được chuyển cho phương thức __init__[]
Các biến thể hiện B
7 và B
3 trong ví dụ trên là duy nhất cho mỗi thể hiện
Lưu ý rằng đối số đầu tiên mà phương thức __init__[]
lấy là self
Bạn có thể đặt tên cho đối số này là bất cứ thứ gì vì tên self
không có ý nghĩa đặc biệt trong Python
self
đại diện cho một thể hiện của lớp, vì vậy khi chúng ta gán một biến là method_a
3, chúng ta đang khai báo một biến thể hiện - một biến duy nhất cho mỗi thể hiện
Bạn có thể sử dụng đối tượng self
để gọi một hàm trong lớp theo cách tương tự
Dòng A
7 trong phương thức method_a
6 gọi phương thức B
1 trong thể hiện
Điều quan trọng cần lưu ý là chúng ta phải tạo một thể hiện của lớp để gọi phương thức B
0, phương thức này sẽ gọi phương thức B
1
Tuy nhiên, cũng có những phương thức tĩnh có thể được gọi trên lớp chứ không chỉ trên một thể hiện của lớp
Các biến thể hiện B
7 và B
3 trong ví dụ là duy nhất cho từng thể hiện, trái ngược với biến lớp method_b
2 được chia sẻ bởi tất cả các thể hiện
Chúng tôi đã sử dụng trình trang trí @staticmethod
để xác định một phương thức tĩnh trong lớp
Phương thức tĩnh không nhận đối số ngầm định đầu tiên [self
] và có thể được gọi trên lớp hoặc một thể hiện của lớp
Tuy nhiên, các phương thức tĩnh chủ yếu được sử dụng cho mục đích tổ chức nên bạn sẽ không phải sử dụng chúng thường xuyên
Các phương thức thông thường được truyền một đối tượng self
cung cấp cho chúng ta một tham chiếu đến thể hiện
Các biến thể hiện B
7 và B
3 là duy nhất cho mỗi thể hiện, nhưng các thể hiện này chia sẻ cùng một biến lớp method_b
2
Nếu bạn phải truy cập một thuộc tính thể hiện, e. g. B
7 hoặc B
3, bạn phải xác định một phương thức thông thường [không phải phương thức tĩnh] và lấy self
làm đối số đầu tiên
Sau đó, bạn có thể truy cập các thuộc tính là __init__[]
2 hoặc gọi các phương thức là __init__[]
3 từ bên trong lớp
Khi chúng ta gọi một phương thức hoặc truy cập một thuộc tính trên một thể hiện của lớp, e. g. __init__[]
4, bạn có thể tưởng tượng rằng phương thức __init__[]
5 hoàn toàn được thông qua thể hiện __init__[]
6 [self
] làm đối số
Điều này cho phép chúng ta truy cập các thuộc tính khác hoặc gọi các phương thức khác bằng cách sử dụng đối tượng self
trong phạm vi __init__[]
5