Computer >> Máy Tính >  >> Lập trình >> Python

Các lớp và đối tượng trong Python cho người mới bắt đầu

Hôm nay chúng ta sẽ nói về các lớp học. Không, ý chúng tôi không phải là trường lớp.

Trong lập trình, các lớp có định nghĩa riêng. Một lớp là một bản thiết kế được tạo bởi một người lập trình cho một đối tượng. Nó xác định dữ liệu có thể được lưu trữ trong một đối tượng và các phương thức có thể được thực hiện trên đối tượng cụ thể đó.

Python là một ngôn ngữ lập trình hướng đối tượng. Điều này có nghĩa là nó sử dụng một mô hình phát triển trong đó các đối tượng và lớp được sử dụng để lưu trữ dữ liệu.

Cách tiếp cận hướng đối tượng giúp giảm sự lặp lại trong mã của bạn, giúp dễ đọc và duy trì mã của bạn hơn. Các lớp và đối tượng là một phần của nhiều ngôn ngữ lập trình, chẳng hạn như Java, Python và C ++.

Trong hướng dẫn này, chúng ta sẽ thảo luận về các lớp là gì, cách chúng hoạt động và cách bạn có thể khai báo một lớp trong Python. Chúng tôi sẽ hướng dẫn một vài ví dụ để giúp bạn trong quá trình thực hiện.

Class là gì?

Một lớp là một bản thiết kế mà bạn sử dụng để xác định một đối tượng.

Hãy tưởng tượng rằng bạn đang xem bản thiết kế cho một ngôi nhà. Bản thiết kế đó sẽ phác thảo nơi cửa ra vào, nơi đặt cửa sổ, v.v. Một lớp học trong lập trình cũng tương tự như vậy. Một lớp cung cấp bản thiết kế về dữ liệu có thể được lưu trữ trong một đối tượng.

Các lớp được xác định bằng cách sử dụng class từ khóa. Hãy bắt đầu bằng cách xác định một lớp được gọi là Trình phát có hai chức năng:

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

người chơi đẳng cấp:

""" This is a class for a player """
	name = "Luke"

	def wield_sword(self):
		print("You have wielded your sword.")

	def drink_health_potion(self):
		print("You have consumed a health potion.")

Lớp này đại diện cho một người chơi trong trò chơi điện tử. Nó chứa cả thuộc tính và phương thức. Các thuộc tính thường được gọi là các biến thể hiện khi chúng nằm trong một lớp.

Một phương pháp cho phép bạn sử dụng một thanh kiếm và phương pháp khác cho phép bạn uống một loại thần dược. Lớp chứa một biến lớp:tên. Điều này lưu trữ tên mặc định cho trình phát của chúng tôi.

Lưu ý rằng chúng tôi đang sử dụng từ self một vài lần trong mã này. Bản thân nó giống như cái gì vậy:một đại diện của chính lớp. Bản thân chứa tất cả các giá trị được lưu trữ trong một lớp cụ thể, vì vậy bạn có thể truy cập tất cả chúng bên trong các phương thức của mình.

Khi chúng tôi chạy mã của mình, không có gì xảy ra. Chuyện gì đang xảy ra vậy? Hãy nhớ cách chúng ta đã nói rằng một lớp học là một bản thiết kế? Đó là lý do không có gì xảy ra. Chúng tôi phải làm điều gì đó với bản thiết kế của mình để nó trở nên hữu ích.

Đối tượng là gì?

Một đối tượng là một thể hiện đơn lẻ của một lớp. Nó được định nghĩa bằng cách sử dụng bản thiết kế được tạo bởi một lớp.

Hãy tạo một đối tượng cho một người chơi mới trong trò chơi của chúng ta, Luke:

luke = Player()

Chúng tôi vừa tạo một đối tượng có tên là Luke. Đối tượng của chúng ta bây giờ có thể truy cập tất cả dữ liệu được lưu trữ trong lớp của chúng ta, cũng như các phương thức được liên kết với lớp của chúng ta:

luke = Player()
print(luke.name)
luke.wield_sword()

Mã của chúng tôi trả về:

Luke

Bạn đã sử dụng thanh kiếm của bạn.

Trong mã của chúng tôi, chúng tôi đã in ra giá trị của name thuộc tính trong đối tượng Luke của chúng tôi. Để truy cập các thuộc tính trong một lớp, bạn phải nêu tên của lớp, theo sau là dấu chấm, sau đó là thuộc tính cá thể mà bạn muốn truy cập. Đây thường được gọi là dot notation .

Theo mặc định, giá trị của name được đặt thành Luke. Chúng ta sẽ nói về cách thay đổi điều này sau một phút.

Chúng tôi cũng đã gọi wield_sword() của mình lớp. Khi chúng tôi gọi lớp này, nội dung của wield_sword() phương thức bên trong lớp Player của chúng tôi đã được thực thi. Điều đó khiến một thông báo được in trên bảng điều khiển nói rằng "" Bạn đã sử dụng thanh kiếm của mình. "

Bạn có thể khai báo bao nhiêu đối tượng của một lớp tùy thích:đó là lý do tại sao các lớp rất mạnh mẽ. Bạn có thể sử dụng lại cùng các phương thức và giá trị mặc định được lưu trữ trong một lớp trên nhiều đối tượng khác nhau.

Trình tạo lớp

Các hàm tạo cho phép bạn khởi tạo dữ liệu bên trong một lớp. Một phương thức khởi tạo được thực thi ngay sau khi bạn khai báo một đối tượng của một lớp cụ thể.

Tên của một hàm tạo là __init__() . Bạn có thể quen nhìn thấy các hàm có dấu gạch dưới kép (__) trong mã của mình. Các chức năng này được gọi là các chức năng đặc biệt vì chúng có một mục đích được xác định trước. Trong trường hợp này, mục đích của __init__ là khởi tạo lớp của chúng ta.

Cập nhật lớp Người chơi mà chúng tôi đã tạo trước đó để đưa phương thức này vào đầu lớp:

def __init__(self):
	print("Your character has been created.")

Phương thức này phải có trước khi bất kỳ biến hoặc phương thức nào được định nghĩa trong lớp của bạn. Hãy chạy lại mã chính của chúng ta từ trước đó:

luke = Player()
print(luke.name)
luke.wield_sword()

Mã của chúng tôi trả về:

Nhân vật của bạn đã được tạo.

Luke

Bạn đã sử dụng thanh kiếm của bạn.

Chúng tôi không gọi __init__ trong chương trình chính của chúng tôi nhưng nó vẫn chạy. Đó là vì các hàm tạo được tự động thực thi khi bạn tạo một đối tượng của một lớp.

Trước đó, chúng tôi đã gán giá trị của name biến trong lớp của chúng ta thành Luke. Mặc dù điều này hữu ích nếu chúng tôi muốn gọi người chơi của mình là Luke, nhưng sẽ không thực tế nếu người chơi có thể có nhiều tên khác nhau.

Đó là nơi các hàm tạo xuất hiện. Hãy tạo một hàm tạo cho phép chúng tôi chỉ định tên cho trình phát của mình:

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

Đoạn mã này cho phép chúng ta truyền một tham số vào từng đối tượng Player. Tham số này sẽ đại diện cho tên của người chơi. Sau đó, chúng tôi sẽ tạo một phương thức cho chúng tôi biết tên người chơi của chúng tôi:

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

	def get_name(self):
		print("Your name is " + self.name)

Hãy tạo một phiên bản mới của lớp Người chơi của chúng tôi cho một người chơi tên là Leah:

leah = Player("Leah")
leah.get_name()

Mã của chúng tôi trả về:

Tên bạn là Leah.

Chúng tôi đã chỉ định giá trị của name biến trong đối tượng của chúng tôi thành Leah. Điều này có nghĩa là bất cứ nơi nào chúng tôi tham chiếu nó trong lớp của chúng tôi, giá trị của nó là Leah. Hàm tạo được thực thi ngay sau khi chúng ta tạo một đối tượng của lớp mình, vì vậy chúng ta không phải lo lắng về việc gọi nó.

Sau đó, chúng tôi gọi phương thức get_name() trong đó in ra tên được liên kết với trình phát của chúng tôi.

Bạn có thể thêm nhiều tham số vào một lớp như bạn muốn:

class Player:
	def __init__(self, name, player_type):
		self.name = name
		self.player_type = player_type

	def get_name(self):
		print("Your name is " + self.name)

	def get_player_type(self):
		print(self.name + " is a " + self.player_type + ".")

Trong ví dụ này, lớp Player của chúng tôi hỗ trợ hai tham số. Một đại diện cho tên của một Người chơi (tên) và một đại diện cho loại người chơi đó (player_type ). Hãy tạo một đối tượng của lớp này:

leah = Player("Leah", "Mage")
leah.get_name()
leah.get_player_type()

Mã của chúng tôi trả về:

Tên bạn là Leah.

Leah là một Pháp sư.

Cả hai giá trị ban đầu mà chúng tôi đã chỉ định đều có thể truy cập được trong lớp của chúng tôi.

Kết luận

Các lớp học cho phép bạn giảm bớt sự lặp lại trong mã của mình. Khi bạn đã xác định một lớp, bạn có thể sử dụng cấu trúc của nó để xác định bao nhiêu đối tượng tùy thích. Do giảm sự lặp lại, mã của bạn sẽ dễ đọc hơn và do đó dễ bảo trì hơn.

Bây giờ bạn đã sẵn sàng để bắt đầu viết các lớp Python của riêng mình như một chuyên gia!