18/09/2018, 16:26

Làm thế nào để xây dựng các lớp và định nghĩa các đối tượng trong Python 3

Giới thiệu Python là một ngôn ngữ lập trình hướng đối tượng. Lập trình hướng đối tượng (OOP) tập trung vào việc tạo ra các mẫu mã có thể tái sử dụng, trái ngược với lập trình thủ tục, tập trung vào các hướng dẫn được trình tự rõ ràng. Khi làm việc trên các chương trình phức tạp đặc biệt, lập ...

Giới thiệu

Python là một ngôn ngữ lập trình hướng đối tượng. Lập trình hướng đối tượng (OOP) tập trung vào việc tạo ra các mẫu mã có thể tái sử dụng, trái ngược với lập trình thủ tục, tập trung vào các hướng dẫn được trình tự rõ ràng. Khi làm việc trên các chương trình phức tạp đặc biệt, lập trình hướng đối tượng cho phép bạn sử dụng lại mã và viết mã dễ đọc hơn, do đó làm cho nó dễ bảo trì hơn.

Một trong những khái niệm quan trọng nhất trong lập trình hướng đối tượng là sự phân biệt giữa các lớp và các đối tượng, được định nghĩa như sau:

  • Lớp học â € ”Một kế hoạch chi tiết được tạo ra bởi một lập trình viên cho một đối tượng. Điều này định nghĩa một tập hợp các thuộc tính sẽ mô tả bất kỳ đối tượng nào được khởi tạo từ lớp này.
  • Vật â € "Một thể hiện của một lớp. Đây là phiên bản đã nhận ra của lớp, trong đó lớp được biểu hiện trong chương trình.

Chúng được sử dụng để tạo các mẫu (trong trường hợp các lớp) và sau đó sử dụng các mẫu (trong trường hợp các đối tượng).

Trong hướng dẫn này, chúng ta sẽ đi qua việc tạo các lớp, khởi tạo các đối tượng, khởi tạo các thuộc tính với phương thức khởi tạo và làm việc với nhiều hơn một đối tượng của cùng một lớp.

Các lớp học

Các lớp học giống như một kế hoạch chi tiết hoặc một mẫu thử nghiệm mà bạn có thể định nghĩa để sử dụng để tạo các đối tượng.

Chúng tôi xác định các lớp học bằng cách sử dụng class từ khóa, tương tự như cách chúng tôi định nghĩa hàm bằng cách sử dụng def từ khóa.

Hãy định nghĩa một lớp được gọi là Shark có hai chức năng liên kết với nó, một cho bơi lội và một cho là tuyệt vời:

shark.py

class Shark:
    def swim(self):
        print("The shark is swimming.")

    def be_awesome(self):
        print("The shark is being awesome.")

Bởi vì các hàm này được thụt vào dưới lớp Shark, chúng được gọi là phương pháp. Phương pháp là một loại hàm đặc biệt được định nghĩa trong một lớp.

Đối số cho các hàm này là từ self, là tham chiếu đến các đối tượng được tạo dựa trên lớp này. Để tham chiếu các cá thể (hoặc các đối tượng) của lớp, self sẽ luôn là tham số đầu tiên, nhưng nó không phải là tham số duy nhất.

Xác định lớp này không tạo ra bất kỳ Shark đối tượng, chỉ mẫu cho Shark mà chúng ta có thể định nghĩa sau. Tức là, nếu bạn chạy chương trình trên ở giai đoạn này, sẽ không có gì được trả về.

Tạo Shark lớp trên cung cấp cho chúng tôi một kế hoạch chi tiết cho một đối tượng.

Các đối tượng

Một đối tượng là một thể hiện của một lớp. Chúng ta có thể lấy Shark lớp được định nghĩa ở trên và sử dụng nó để tạo một đối tượng hoặc thể hiện của nó.

Chúng tôi sẽ thực hiện Shark đối tượng được gọi sammy:

sammy = Shark()

Ở đây, chúng tôi đã khởi tạo đối tượng sammy như một thể hiện của lớp bằng cách thiết lập nó bằng Shark().

Bây giờ, hãy sử dụng hai phương pháp với Shark vật sammy:

sammy = Shark()
sammy.swim()
sammy.be_awesome()

Các Shark vật sammy đang sử dụng hai phương pháp swim() và be_awesome(). Chúng tôi gọi chúng bằng cách sử dụng toán tử dấu chấm (.), được sử dụng để tham chiếu một thuộc tính của đối tượng. Trong trường hợp này, thuộc tính là một phương thức và nó được gọi với dấu ngoặc đơn, giống như cách bạn cũng sẽ gọi với một hàm.

Bởi vì từ khóa self là một tham số của các phương thức như được định nghĩa trong Shark lớp, sammy đối tượng được truyền cho các phương thức. Các self tham số đảm bảo rằng các phương thức có cách đề cập đến các thuộc tính đối tượng.

Tuy nhiên, khi chúng ta gọi các phương thức, không có gì được truyền vào bên trong dấu ngoặc đơn, đối tượng sammy đang được tự động chuyển qua toán tử dấu chấm.

Hãy thêm đối tượng trong ngữ cảnh của một chương trình:

shark.py

class Shark:
    def swim(self):
        print("The shark is swimming.")

    def be_awesome(self):
        print("The shark is being awesome.")

def main():
    sammy = Shark()
    sammy.swim()
    sammy.be_awesome()

if __name__ == "__main__":
    main()

Letâ € ™ s chạy chương trình để xem những gì nó làm:

python shark.py

OutputThe shark is swimming.
The shark is being awesome.

Đối tượng sammy gọi hai phương thức trong main() chức năng của chương trình, khiến các phương thức đó chạy.

Phương thức Constructor

Phương thức khởi tạo được sử dụng để khởi tạo dữ liệu. Nó được chạy ngay sau khi một đối tượng của một lớp được khởi tạo. Còn được gọi là __init__ phương pháp, nó sẽ là định nghĩa đầu tiên của một lớp và trông như thế này:

class Shark:
    def __init__(self):
        print("This is the constructor method.")

Nếu bạn đã thêm ở trên __init__ phương pháp để Shark lớp trong chương trình ở trên, chương trình sẽ xuất ra phần sau mà không sửa đổi bất cứ điều gì của bạn trong sammy instantiation:

OutputThis is the constructor method.
The shark is swimming.
The shark is being awesome.

Điều này là do phương thức khởi tạo được tự động khởi tạo. Bạn nên sử dụng phương thức này để thực hiện bất kỳ khởi tạo nào bạn muốn làm với các đối tượng lớp của bạn.

Thay vì sử dụng phương thức khởi tạo ở trên, hãy tạo một phương thức sử dụng name biến mà chúng ta có thể sử dụng để gán tên cho các đối tượng. Chúng tôi sẽ vượt qua name như một tham số và thiết lập self.name tương đương với name:

shark.py

class Shark:
    def __init__(self, name):
        self.name = name

Tiếp theo, chúng ta có thể sửa đổi các chuỗi trong các hàm của chúng ta để tham chiếu các tên, như dưới đây:

shark.py

class Shark:
    def __init__(self, name):
        self.name = name

    def swim(self):
        # Reference the name
        print(self.name + " is swimming.")

    def be_awesome(self):
        # Reference the name
        print(self.name + " is being awesome.")

Cuối cùng, chúng ta có thể đặt tên của Shark vật sammy bằng với "Sammy" bằng cách truyền nó như một tham số của Shark lớp học:

shark.py

class Shark:
    def __init__(self, name):
        self.name = name

    def swim(self):
        print(self.name + " is swimming.")

    def be_awesome(self):
        print(self.name + " is being awesome.")

def main():
    # Set name of Shark object
    sammy = Shark("Sammy")
    sammy.swim()
    sammy.be_awesome()

if __name__ == "__main__":
    main()

Chúng tôi có thể chạy chương trình ngay bây giờ:

python shark.py

OutputSammy is swimming.
Sammy is being awesome.

Chúng ta thấy rằng tên chúng ta truyền cho đối tượng đang được in ra. Chúng tôi đã xác định __init__ phương thức với tên tham số (cùng với self từ khóa) và xác định một biến trong phương thức.

Bởi vì phương thức khởi tạo được tự động khởi tạo, chúng ta không cần phải gọi nó một cách rõ ràng, chỉ truyền các đối số trong các dấu ngoặc đơn sau tên lớp khi chúng ta tạo một thể hiện mới của lớp đó.

Nếu chúng tôi muốn thêm thông số khác, chẳng hạn như age, chúng ta có thể làm như vậy bằng cách chuyển nó đến __init__ phương pháp:

class Shark:
    def __init__(self, name, age):
        self.name = name
        self.age = age

Sau đó, khi chúng ta tạo đối tượng của mình sammy, chúng ta có thể vượt qua tuổi của Sammy trong tuyên bố của chúng tôi:

sammy = Shark("Sammy", 5)

Tận dụng age, chúng ta cũng cần phải tạo một phương thức trong lớp để gọi nó.

Phương thức xây dựng cho phép chúng ta khởi tạo các thuộc tính nhất định của một đối tượng.

Làm việc với nhiều hơn một đối tượng

Các lớp học rất hữu ích vì chúng cho phép chúng ta tạo ra nhiều đối tượng tương tự dựa trên cùng một bản thiết kế.

Để hiểu được cách thức hoạt động, hãy thêm một cách khác Shark đối tượng cho chương trình của chúng tôi:

shark.py

class Shark:
    def __init__(self, name):
        self.name = name

    def swim(self):
        print(self.name + " is swimming.")

    def be_awesome(self):
        print(self.name + " is being awesome.")

def main():
    sammy = Shark("Sammy")
    sammy.be_awesome()
    stevie = Shark("Stevie")
    stevie.swim()

if __name__ == "__main__":
  main()

Chúng tôi đã tạo một giây Shark đối tượng được gọi stevie và thông qua tên "Stevie" cho nó. Trong ví dụ này, chúng tôi đã sử dụng be_awesome() phương pháp với sammy và swim() phương pháp với stevie.

Letâ € ™ s chạy chương trình:

python shark.py

OutputSammy is being awesome.
Stevie is swimming.

Đầu ra cho thấy rằng chúng ta đang sử dụng hai đối tượng khác nhau, sammy đối tượng và stevie đối tượng, cả hai Shark lớp học.

Các lớp làm cho nó có thể tạo nhiều hơn một đối tượng theo cùng một khuôn mẫu mà không cần tạo từng đối tượng từ đầu.

Phần kết luận

Hướng dẫn này đã đi qua việc tạo các lớp, khởi tạo các đối tượng, khởi tạo các thuộc tính với phương thức hàm tạo và làm việc với nhiều hơn một đối tượng của cùng một lớp.

Lập trình hướng đối tượng là một khái niệm quan trọng cần hiểu vì nó làm cho việc tái chế mã đơn giản hơn, vì các đối tượng được tạo cho một chương trình có thể được sử dụng trong một chương trình khác. Các chương trình hướng đối tượng cũng làm cho thiết kế chương trình tốt hơn vì các chương trình phức tạp khó viết và yêu cầu lập kế hoạch cẩn thận, và điều này làm cho nó ít hoạt động hơn để duy trì chương trình theo thời gian.

0