Chúng ta đều biết Python là ngôn ngữ lập trình hướng đối tượng, và trong Python thì mọi thứ đều là đối tượng kể cả thuộc tính và phương thức. Trong Python, lớp giống như hàm tạo của đối tượng để tạo đối tượng. Do đó, các biến có thể được định nghĩa bên trong lớp, bên ngoài lớp và bên trong các phương thức trong Python. Các biến được định nghĩa bên ngoài lớp có thể được truy cập bởi bất kỳ phương thức hoặc lớp nào chỉ bằng cách viết tên biến. Vì vậy, trong bài viết này, chúng ta sẽ học cách định nghĩa một phương thức bên ngoài định nghĩa lớp
Phương thức trong Python là gì?
Vì Python là ngôn ngữ lập trình hướng đối tượng nên nó có các đối tượng bao gồm các thuộc tính. Các thuộc tính xác định các thuộc tính của các đối tượng này và hành vi được xác định bằng các phương thức. Các phương thức là các đoạn mã có thể tái sử dụng được gọi tại bất kỳ điểm nào trong chương trình và được định nghĩa bên trong lớp. Mỗi phương thức được liên kết với lớp và có thể được gọi trên các thể hiện của lớp đó
Ví dụ: chúng ta có thể xem xét một lớp có tên '
Name- Finxter
Id – 1020
Rank- 1
0' chứa các thuộc tính như Name- Finxter
Id – 1020
Rank- 1
1, Name- Finxter
Id – 1020
Rank- 1
2 và Name- Finxter
Id – 1020
Rank- 1
3. Lớp cũng giữ các hành vi như Name- Finxter
Id – 1020
Rank- 1
4, Name- Finxter
Id – 1020
Rank- 1
5 và Name- Finxter
Id – 1020
Rank- 1
6. Giả sử một đối tượng Name- Finxter
Id – 1020
Rank- 1
7 có các thuộc tính sauName- Finxter
Id – 1020
Rank- 1
Đây là cách bạn có thể gán các giá trị
class Student: def __init__[self, name, id, rank]: self.name = name self.id = id self.rank = rank def run[self]: print[f'{self.name} is a cross country champion!'] def jump[self]: print[f'{self.name} with the following ID: {self.id} is a high jumper!'] def swim[self]: print[f'{self.name} secured rank {self.rank} in swimming.'] stud1 = Student['Finxter', 1020, 1] stud1.run[] stud1.jump[] stud1.swim[]
đầu ra
Name- Finxter
Id – 1020
Rank- 1
0Ví dụ trên đã minh họa cách truyền thống để thêm chức năng [phương thức] vào lớp Python. Ở đây, các phương thức đã được định nghĩa bên trong thân lớp. Bây giờ, giả sử bạn muốn định nghĩa một phương thức bên ngoài thân lớp. Làm thế nào bạn sẽ làm như vậy?
Xác định phương thức bên ngoài và sử dụng nội dung bên trong lớp
Ý tưởng ở đây là định nghĩa phương thức bên ngoài lớp và sau đó sử dụng nó bên trong thân lớp, như minh họa bên dưới
ví dụ 1
Name- Finxter
Id – 1020
Rank- 1
1Bạn cũng có thể định nghĩa một lớp trước và sau đó thêm một phương thức hoặc hàm vào lớp đó từ bên ngoài phần thân của nó, như minh họa bên dưới
ví dụ 2
Name- Finxter
Id – 1020
Rank- 1
2thận trọng. Chúng ta thậm chí có thể định nghĩa các hàm, phương thức và lớp trong các mô-đun khác nhau nếu chúng ta muốn. Tuy nhiên, nên sử dụng ví dụ 1 thay vì ví dụ 2 [xác định lớp trong một mô-đun, sau đó nhập nó vào một mô-đun khác và thêm các phương thức vào nó một cách linh hoạt] vì các đối tượng lớp có thể hoạt động khác nhau tùy thuộc vào việc mô-đun đã được nhập hay chưa
Có một cách khác để định nghĩa hàm bên ngoài một lớp và sau đó thêm nó vào. Nhưng có một sự khác biệt trong việc gán chức năng cho đối tượng thể hiện hoặc lớp. Nhìn vào ví dụ sau để hiểu sự khác biệt tinh tế
Name- Finxter
Id – 1020
Rank- 1
3Giải trình. Hãy hiểu những gì đang xảy ra ở đây
- Trong trường hợp của lớp
8 ,Name- Finxter Id – 1020 Rank- 1
9 giống như bất kỳ phương thức thông thường nào khác được liên kết với thể hiện của lớp. Chúng ta hãy xem nó trông như thế nào –Name- Finxter Id – 1020 Rank- 1
- Trong trường hợp lớp
class Student: def __init__[self, name, id, rank]: self.name = name self.id = id self.rank = rank def run[self]: print[f'{self.name} is a cross country champion!'] def jump[self]: print[f'{self.name} with the following ID: {self.id} is a high jumper!'] def swim[self]: print[f'{self.name} secured rank {self.rank} in swimming.'] stud1 = Student['Finxter', 1020, 1] stud1.run[] stud1.jump[] stud1.swim[]
0,
9 chỉ đơn giản là một tham chiếu đến hàm bar, i. e. , nó không phải là một chức năng bị ràng buộc. Vì vậy, chúng ta phải truyền thể hiện cho chức năng này để nó hoạt động bình thườngName- Finxter Id – 1020 Rank- 1
Sử dụng thừa kế
Bạn thậm chí có thể sử dụng các phương thức của một lớp trong một lớp khác. Trong ví dụ sau, chúng ta có một lớp
class Student: def __init__[self, name, id, rank]: self.name = name self.id = id self.rank = rank def run[self]: print[f'{self.name} is a cross country champion!'] def jump[self]: print[f'{self.name} with the following ID: {self.id} is a high jumper!'] def swim[self]: print[f'{self.name} secured rank {self.rank} in swimming.'] stud1 = Student['Finxter', 1020, 1] stud1.run[] stud1.jump[] stud1.swim[]2 với một số phương thức được định nghĩa bên trong nó. Tất cả các phương thức của lớp
class Student: def __init__[self, name, id, rank]: self.name = name self.id = id self.rank = rank def run[self]: print[f'{self.name} is a cross country champion!'] def jump[self]: print[f'{self.name} with the following ID: {self.id} is a high jumper!'] def swim[self]: print[f'{self.name} secured rank {self.rank} in swimming.'] stud1 = Student['Finxter', 1020, 1] stud1.run[] stud1.jump[] stud1.swim[]2 có thể được kế thừa bởi lớp
class Student: def __init__[self, name, id, rank]: self.name = name self.id = id self.rank = rank def run[self]: print[f'{self.name} is a cross country champion!'] def jump[self]: print[f'{self.name} with the following ID: {self.id} is a high jumper!'] def swim[self]: print[f'{self.name} secured rank {self.rank} in swimming.'] stud1 = Student['Finxter', 1020, 1] stud1.run[] stud1.jump[] stud1.swim[]4 như hình bên dưới
Name- Finxter
Id – 1020
Rank- 1
1đầu ra
Name- Finxter
Id – 1020
Rank- 1
2Đọc liên quan. Kế thừa trong Python
Sự kết luận
Tóm lại, hoàn toàn có thể có các hàm bên ngoài các lớp trong Python. Nếu bạn muốn tập hợp một nhóm các chức năng trong một hộp thì bạn chỉ cần đặt chúng lại với nhau trong cùng một mô-đun. Hơn nữa, bạn có thể lồng các mô-đun vào trong các gói. Bạn nên sử dụng các lớp khi phải tạo một kiểu dữ liệu mới và không chỉ sử dụng nó để nhóm các chức năng lại với nhau
Đó là nó cho cuộc thảo luận này và tôi hy vọng nó đã giúp bạn. Hãy theo dõi và đăng ký để có nhiều bài viết và thảo luận thú vị hơn trong tương lai. học tập vui vẻ
Bài viết của Shubham Sayon và Rashi Agarwal
Shubham Sayon
Tôi là một người tạo nội dung và Blogger Python chuyên nghiệp. Tôi đã xuất bản nhiều bài báo và tạo các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc với tư cách là một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Networking