Ngày nay, một lập trình viên chắc chắn sẽ bắt gặp lập trình hướng đối tượng [OOP] trong sự nghiệp của họ. Là một ngôn ngữ lập trình hiện đại, Python cung cấp tất cả các phương tiện để thực hiện triết lý hướng đối tượng. Phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 là cốt lõi của OOP và được yêu cầu để tạo các đối tượng
Trong bài viết này, chúng ta sẽ xem lại mô hình lập trình hướng đối tượng trước khi giải thích lý do và cách sử dụng phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2.
Lập trình hướng đối tượng là gì?
Lập trình hướng đối tượng [OOP] là một mẫu lập trình bao gồm việc xác định các đối tượng và tương tác với chúng. Một đối tượng là một tập hợp các biến và hàm phức tạp và có thể được sử dụng để biểu diễn các thực thể thực như nút, máy bay hoặc người
Để khai báo, khởi tạo và thao tác với các đối tượng trong Python, chúng ta sử dụng các lớp. Chúng đóng vai trò là mẫu mà từ đó các đối tượng được tạo ra. Sơ đồ sau đây minh họa ý tưởng này
Chúng ta có thể thấy trong sơ đồ trên rằng lớp chó chứa các đặc điểm cụ thể của chó, chẳng hạn như giống và màu mắt, cũng như khả năng chạy và đi bộ. Hãy bắt đầu bằng cách định nghĩa một lớp trong Python
Lớp học là gì?
Một lớp định nghĩa và cấu trúc tất cả các đối tượng được tạo từ nó. Bạn có thể xem lớp như một nhà máy sản xuất đối tượng. Hãy lấy ví dụ về chó săn cáo—một giống chó. Từ quan điểm OOP, bạn có thể coi
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...4 là một lớp bao gồm các đặc điểm của một con chó như giống hoặc màu mắt của nó. Vì Fox Terrier là một con chó, chúng ta có thể tạo một đối tượng dog sẽ kế thừa các đặc điểm của lớp của nó. Các lớp sử dụng các phương thức và hàm tạo để tạo và định nghĩa các đối tượng
Phương pháp đặc biệt và do người dùng xác định
Phương thức là các chức năng trong một lớp được thiết kế để thực hiện một nhiệm vụ cụ thể. Python phân biệt giữa các phương thức do người dùng định nghĩa, được viết bởi lập trình viên và các phương thức đặc biệt được tích hợp sẵn trong ngôn ngữ. Phương thức do người dùng định nghĩa là một hàm do lập trình viên tạo ra để phục vụ một mục đích cụ thể. Chẳng hạn, một lớp
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...4 có thể có một phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...6 mà đối tượng con chó có thể sử dụng. Lập trình viên tạo phương thức này và yêu cầu nó thực hiện các hành động cụ thể
Các phương thức đặc biệt được xác định bằng dấu gạch dưới kép ở hai bên tên của chúng, chẳng hạn như
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2. Python sử dụng các phương thức đặc biệt để nâng cao chức năng của các lớp. Hầu hết chúng hoạt động ở chế độ nền và được gọi tự động khi chương trình cần. Bạn không thể gọi họ một cách rõ ràng. Chẳng hạn, khi bạn tạo một đối tượng mới, Python sẽ tự động gọi phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...8, phương thức này sẽ gọi phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2. Phương thức
...Tomita = Dog["Fox Terrier","brown"]...0 được gọi khi bạn
...Tomita = Dog["Fox Terrier","brown"]...1 một đối tượng. Mặt khác, các phương thức do người dùng định nghĩa, như
...Tomita = Dog["Fox Terrier","brown"]...2, được gọi rõ ràng
Người xây dựng
Hàm tạo là một phương thức đặc biệt mà chương trình gọi khi tạo đối tượng. Hàm tạo được sử dụng trong lớp để khởi tạo các thành viên dữ liệu cho đối tượng. Với ví dụ lớp
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...4 của chúng tôi, bạn có thể sử dụng hàm tạo để gán các đặc điểm của chó cho từng đối tượng
...Tomita = Dog["Fox Terrier","brown"]...4. Phương thức đặc biệt
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 là hàm tạo của Python
Với sự hiểu biết về lập trình hướng đối tượng và các lớp, bây giờ chúng ta hãy xem cách thức hoạt động của phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 trong chương trình Python
Tầm quan trọng của các đối tượng trong Python
Không phải lúc nào chúng ta cũng nhìn thấy nó khi viết chương trình, nhưng các đối tượng là trung tâm trong cách thức hoạt động của Python. Khi chúng ta khai báo một biến đơn giản trong Python, một đối tượng sẽ được tạo trong nền
Nếu chúng ta thực thi đoạn mã sau
breed = "Doberman"
Python sử dụng lớp str chứa các thuộc tính và phương thức, giống hệt như những gì bạn tạo trong mã của riêng mình, ngoại trừ tất cả đều diễn ra trong nền
Phương pháp __init__ hoạt động như thế nào?
Phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 tương đương với Python của hàm tạo C++ theo cách tiếp cận hướng đối tượng. Hàm
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 được gọi mỗi khi một đối tượng được tạo từ một lớp. Phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 cho phép lớp khởi tạo các thuộc tính của đối tượng và không phục vụ mục đích nào khác. Nó chỉ được sử dụng trong các lớp học.
Tạo một lớp học
Hãy bắt đầu bằng cách tạo một lớp
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...
Đầu tiên, chúng ta khai báo lớp Dog sử dụng từ khóa
...print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]0. Chúng tôi sử dụng từ khóa
...print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]1 để định nghĩa một hàm hoặc phương thức, chẳng hạn như phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2. Như bạn có thể thấy, phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 khởi tạo hai thuộc tính.
...print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]4 và
...print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]5.
Bây giờ chúng ta sẽ xem cách truyền các tham số này khi khai báo một đối tượng. Đây là nơi chúng ta cần từ khóa self để liên kết các thuộc tính của đối tượng với các đối số nhận được
Tạo một đối tượng
Tiếp theo, chúng ta sẽ tạo một đối tượng hoặc thể hiện của lớp
...print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]6
________số 8_______
Khi chúng ta tạo đối tượng
...print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]7 [là tên của con chó], trước tiên chúng ta xác định lớp mà nó được tạo ra [Dog]. Tiếp theo, chúng ta chuyển các đối số “Fox Terrier” và “brown”, tương ứng với các tham số tương ứng của phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 của lớp
...print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]6
Phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 sử dụng từ khóa
This dog is a Fox Terrier and its eyes are brown1 để gán các giá trị được truyền dưới dạng đối số cho các thuộc tính đối tượng
This dog is a Fox Terrier and its eyes are brown2 và
This dog is a Fox Terrier and its eyes are brown3
Truy cập thuộc tính đối tượng
Để truy cập một thuộc tính của đối tượng Fox Terrier hoàn toàn mới của bạn, bạn có thể sử dụng dấu chấm [. ] để nhận giá trị bạn cần. Một tuyên bố in giúp chúng tôi chứng minh cách thức hoạt động của nó
...print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]
Thực thi đoạn mã trên cho chúng ta kết quả như sau
This dog is a Fox Terrier and its eyes are brown
Chương trình đã truy cập các thuộc tính
This dog is a Fox Terrier and its eyes are brown4 và hiển thị chúng đúng cách
Trình tạo __init__ mặc định
Trong Python, hàm tạo không nhất thiết phải truyền tham số cho nó. Có thể có các tham số mặc định. Hàm tạo không có tham số bắt buộc được gọi là hàm tạo mặc định. Hãy viết lại lớp của chúng ta với một hàm tạo mặc định
class Dog: def __init__[self, dogBreed="German Shepherd",dogEyeColor="Brown"]: self.breed = dogBreed self.eyeColor = dogEyeColor
Nếu người dùng không nhập bất kỳ giá trị nào, hàm tạo sẽ gán “German Shepherd” và “Brown” làm thuộc tính
Bây giờ chúng ta có thể tạo một thể hiện của Dog mà không cần chỉ định bất kỳ tham số nào.
tomita = Dog[]
Vì không có đối số để truyền, nên chúng tôi sử dụng dấu ngoặc đơn trống sau tên lớp. Chúng ta vẫn có thể hiển thị các thuộc tính của đối tượng
print["This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor]
Điều này mang lại cho chúng tôi đầu ra sau
This dog is a German Shepherd and its eyes are Brown
Mã đơn giản này hoạt động hoàn hảo
Học cách viết mã với Udacity
Phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 là tối quan trọng đối với lập trình hướng đối tượng của Python. Trong bài viết này, chúng tôi đã giải thích vai trò của phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 trong ngữ cảnh của OOP và định nghĩa lớp. Phương thức
class Dog: def __init__[self,dogBreed,dogEyeColor]: self.breed = dogBreed self.eyeColor = dogEyeColor...2 là một trong nhiều phương thức đặc biệt được tích hợp trong Python và các lập trình viên có thể sử dụng nó có hoặc không có tham số cho mỗi lớp mà họ tạo