Rate this post

Một class là một prototype do người dùng định nghĩa mà từ đó các Object được tạo ra. Các class cung cấp phương pháp kết hợp dữ liệu và chức năng lại với nhau. Việc tạo một class mới sẽ tạo ra một loại Object mới, cho phép tạo các instance mới của loại đó. Mỗi instance của class có thể có các attributes hay thuộc tính gắn liền với nó để duy trì trạng thái của nó. Các instance của class hay thể hiện cũng có thể có các phương thức (do class của chúng định nghĩa) để sửa đổi trạng thái của chúng.

Các bài viết liên quan:

Để hiểu nhu cầu tạo một class trong Python, hãy xem xét một ví dụ, giả sử bạn muốn theo dõi số lượng chó có thể có các attributes khác nhau như giống và tuổi. Nếu một danh sách được sử dụng, phần tử đầu tiên có thể là giống chó trong khi phần tử thứ hai có thể đại diện cho tuổi của nó. Giả sử có 100 con chó khác nhau, thì làm sao bạn biết phần tử nào được cho là phần tử nào? Điều gì sẽ xảy ra nếu bạn muốn thêm các attributes khác cho những chú chó này? Điều này thiếu tổ chức và đó là nhu cầu chính xác cho các class học.

class ClassName:
    # Statement

class tạo cấu trúc dữ liệu do người dùng định nghĩa, chứa các thành viên dữ liệu và hàm thành viên của riêng nó, có thể được truy cập và sử dụng bằng cách tạo một instance của class đó. Một class giống như một bản thiết kế cho một Object.

Một số điểm đặc biệt trên class Python:

  • Các class được tạo bởi class từ khóa.
  • attributes là các biến thuộc về một class.
  • Các attributes luôn public và có thể được truy cập bằng toán tử dấu chấm (.). Ví dụ: Myclass.Myattribute

Định nghĩa một class

class example:
    pass

Trong ví dụ trên, từ khóa class chỉ ra rằng bạn đang tạo một class theo sau là tên của class (trong trường hợp này là example).

Object class

Một Object là một instance của một class. Một class giống như một bản thiết kế trong khi một instance là một bản sao của class với các giá trị thực. Nó không còn là một ý tưởng nữa, nó là một đối tượng thực sự có những attributes một cách cụ thể.

Một Object bao gồm:

  • State: Nó được đại diện bởi các attributes của một Object. Nó cũng phản ánh các attributes của một Object.
  • Behaviour: Nó được biểu diễn bằng các methods của một Object. Nó cũng phản ánh phản ứng của một Object với các Object khác.
  • Identity: Nó cung cấp một tên duy nhất cho một Object và cho phép một Object tương tác với các Object khác.

Khai báo các Object (Còn gọi là khởi tạo một class)

Khi một Object của một class được tạo ra, class đó được cho là đã được khởi tạo. Tất cả các instance chia sẻ các attributes và method của class. Nhưng các giá trị của các attributes đó, tức là trạng thái là duy nhất cho từng Object. Một class duy nhất có thể có bất kỳ số lượng phiên bản nào.

Ví dụ:

#định nghĩa class Dog
class Dog:

	#thuộc tính attr1 và attr2
	attr1 = "mammal"
	attr2 = "dog"

	# hành vi hay method của class
	def fun(self):
		print("I'm a", self.attr1)
		print("I'm a", self.attr2)


#khởi tạo đối tượng Dog, roger là instance
Rodger = Dog()

#truy vấn vào attr1 của class
print(Rodger.attr1)
#gọi hành vi fun()
Rodger.fun()

Trong ví dụ trên, một Object được tạo về cơ bản là một con chó tên là Rodger. class này chỉ có hai attributes class cho chúng ta biết rằng Rodger là chó và động vật có vú.

The self trong python

Self đại diện cho instance của lớp. Bằng cách sử dụng “self”, chúng ta có thể truy cập các thuộc tính và phương thức của lớp trong python. Nó liên kết các thuộc tính với các đối số đã cho.

Lý do bạn cần sử dụng self. là do Python không sử dụng cú pháp @ để chỉ các thuộc tính thể hiện. Python đã quyết định thực hiện các phương thức theo cách làm cho thể hiện của phương thức đó được truyền tự động nhưng không được nhận tự động: tham số đầu tiên của phương thức là thể hiện mà phương thức được gọi.

  • Các phương thức class phải có thêm một tham số đầu tiên trong định nghĩa phương thức. Chúng tôi không đưa ra một giá trị cho tham số này khi chúng tôi gọi phương thức, Python cung cấp nó tham số đầu tiên đó là Self.
  • Nếu chúng ta có một phương thức không có đối số, thì chúng ta vẫn có một đối số là Self.
  • Self tương tự với con trỏ này trong C++ và tham chiếu này trong Java.

Khi chúng ta gọi một phương thức của Object này là myobject.method(arg1, arg2), Python sẽ tự động chuyển đổi phương thức này thành MyClass.method(myobject, arg1, arg2) – đây là tất cả những gì đặc biệt về Self.

Phương thức __init__

Phương thức __init__ tương tự như hàm tạo trong C++ và Java. Constructor được sử dụng để khởi tạo trạng thái của Object. Giống như các phương thức, một hàm tạo cũng chứa một tập hợp các câu lệnh (tức là các hướng dẫn) được thực thi tại thời điểm tạo Object. Nó chạy ngay khi một Object của một class được khởi tạo. Phương pháp này rất hữu ích để thực hiện bất kỳ khởi tạo nào bạn muốn thực hiện với Object của mình.

# ví dụ về class person
class Person:

	# khai báo thuộc tính khởi tạo
	def __init__(self, name):
      #self đại diện cho instance
		self.name = name

	# khai báo phương thức say_hi
	def say_hi(self):
		print('Hello, my name is', self.name)

#khởi tạo đối tượng Nikhil
p = Person('Nikhil')
#gọi phương thức say_hi
p.say_hi()

Class và Instance Variables

Các biến instance dành cho dữ liệu, duy nhất cho từng instance và các biến class dành cho các attributes và phương thức được chia sẻ bởi tất cả các instance của class. Biến instance là các biến có giá trị được gán bên trong hàm tạo hoặc phương thức với self trong khi biến class là biến có giá trị được gán trong class.

Xác định các biến instance bằng cách sử dụng một hàm tạo.

#định nghĩa class Dog
class Dog:

	# biến animal
	animal = 'dog'

	# hàm khởi tạo của Dog
	def __init__(self, breed, color):

		# khởi tạo thuộc tính
		self.breed = breed
		self.color = color


# khởi tạo đối tượng
Rodger = Dog("Pug", "brown")
Buzo = Dog("Bulldog", "black")
#truy xuất vào thuộc tính Rodger
print('Rodger là', Rodger.animal)
print('Breed: ', Rodger.breed)
print('Color: ', Rodger.color)
#truy xuất vào thuộc tính Buzo
print('Buzo là', Buzo.animal)
print('Breed: ', Buzo.breed)
print('Color: ', Buzo.color)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now