Phương thức nào được sử dụng để khởi tạo các đối tượng trong các lớp python?

Như chúng ta đã thảo luận  "self" đại diện cho cùng một đối tượng hoặc thể hiện của lớp. Nếu bạn thấy, bên trong phương thức "get_area", chúng tôi đã sử dụng "self. độ dài" để lấy giá trị của thuộc tính "độ dài". thuộc tính "độ dài" được liên kết với đối tượng [thể hiện của lớp] tại thời điểm tạo đối tượng. "self" đại diện cho đối tượng bên trong lớp. "self" hoạt động giống như "r" trong câu lệnh  "r = Rectangle[160, 120, 2000]". Nếu bạn thấy cấu trúc phương thức "def get_area[self]. "  chúng tôi đã sử dụng "self" làm tham số trong phương thức bởi vì bất cứ khi nào chúng ta gọi phương thức thì đối tượng [thể hiện của lớp] sẽ tự động chuyển thành đối số đầu tiên cùng với các đối số khác của phương thức. Nếu không có đối số nào khác được cung cấp thì chỉ có "self" được truyền cho phương thức. Đó là lý do chúng ta sử dụng "self" để gọi phương thức bên trong lớp["self. get_area[]"]. chúng tôi sử dụng đối tượng [thể hiện của lớp] để gọi phương thức bên ngoài định nghĩa lớp ["r. get_area[]"]. "r" là thể hiện của lớp, khi chúng ta gọi phương thức "r. get_area[]"  ví dụ "r" được chuyển làm đối số đầu tiên ở vị trí của self

Trong hướng dẫn này, chúng ta sẽ học cách tạo và làm việc với các lớp Python. Đặc biệt, chúng ta sẽ thảo luận về các lớp Python là gì, tại sao chúng ta sử dụng chúng, các loại lớp tồn tại, cách định nghĩa một lớp trong Python và khai báo/điều chỉnh các đối tượng lớp, và nhiều thứ khác

Các lớp trong Python là gì?

Vì Python là ngôn ngữ lập trình hướng đối tượng [OOP], nên mọi thứ trong đó đều đại diện cho một đối tượng. Danh sách, bộ dữ liệu, bộ, từ điển, chức năng, v.v. là tất cả các ví dụ về các đối tượng Python. Nói chung, một đối tượng Python là một thực thể gồm các mục dữ liệu và phương thức mô tả hành vi của các mục đó

Ngược lại, một lớp Python là một mẫu hoặc hàm tạo, được sử dụng để tạo các đối tượng Python. Chúng ta có thể coi nó như một công thức nấu ăn, trong đó tất cả các thành phần và số lượng của chúng, bao gồm cả phạm vi có thể có của chúng, được liệt kê và toàn bộ quá trình nấu ăn được mô tả từng bước. Trong trường hợp này, chúng ta có thể so sánh một công thức làm bánh với một lớp, và một chiếc bánh được nấu theo công thức đó với một đối tượng [i. e. , một thể hiện của lớp đó]. Sử dụng cùng một công thức [lớp], chúng ta có thể tạo ra nhiều loại bánh [đối tượng]. Đây chính xác là phạm vi tạo một lớp trong Python. để xác định các phần tử dữ liệu và các quy tắc thiết lập cách các phần tử này có thể tương tác và thay đổi trạng thái của chúng — sau đó sử dụng nguyên mẫu này để xây dựng các đối tượng khác nhau [các thể hiện của lớp] theo cách được xác định trước, thay vì tạo chúng từ đầu mọi lúc

Các loại lớp trong Python

Bắt đầu với Python 3, các thuật ngữ lớp và loại cho các đối tượng gốc của Python giống hệt nhau, nghĩa là đối với bất kỳ đối tượng nào

a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
8, các giá trị của
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
9 và






0 đều bằng nhau. Hãy xác nhận điều này

a = 5
b = 'Hello World'
c = [1, 2, 3]

for var in [a, b, c]:
    print[type[var]==var.__class__]
True
True
True

Có một số lớp dựng sẵn [kiểu dữ liệu] trong Python. integer, float, string, Boolean, list, range, tuple, set, freezeset, dictionary và một số khác, hiếm khi được sử dụng

a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]






Các hàm tích hợp và do người dùng định nghĩa có các lớp/loại riêng

def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]

Khi chúng tôi sử dụng các thư viện Python bổ sung, chẳng hạn như gấu trúc hoặc NumPy, chúng tôi có thể tạo các đối tượng của các lớp/loại chỉ liên quan đến các thư viện đó

import pandas as pd
import numpy as np

s = pd.Series[{'a': 1, 'b': 2}]
df = pd.DataFrame[s]
arr = np.array[[1, 2, 3]]

print[s.__class__]
print[df.__class__]
print[arr.__class__]
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
0

Tuy nhiên, lợi ích thực sự của các lớp trong Python là chúng ta có thể tạo lớp của riêng mình và sử dụng chúng để giải quyết các tác vụ cụ thể. Hãy xem làm thế nào

Định nghĩa các lớp trong Python

Để định nghĩa một lớp Python, hãy sử dụng từ khóa







1 theo sau là tên của lớp mới và dấu hai chấm. Hãy tạo một lớp trống rất đơn giản

a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
2

Hãy chú ý đến quy ước đặt tên Python cho các lớp. sử dụng kiểu chữ hoa lạc đà, trong đó mỗi từ bắt đầu bằng một chữ in hoa và các từ được viết cùng nhau mà không có bất kỳ dấu phân cách nào. Một quy ước rất được khuyến nghị khác là thêm một chuỗi tài liệu. chuỗi đầu tiên bên trong hàm tạo của lớp mô tả ngắn gọn lớp này dùng để làm gì. Hãy thêm một chuỗi tài liệu vào lớp của chúng tôi

a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
3

Đoạn mã trên tạo một đối tượng lớp mới có tên là







2. Một lưu ý thú vị ở đây là, bởi vì mọi đối tượng trong Python đều liên quan đến một số lớp [kiểu], nên lớp/kiểu của lớp mới của chúng ta [cũng như tất cả các lớp Python khác, bao gồm cả các lớp dựng sẵn] là kiểu

True
True
True
0
True
True
True
1

Hãy trở lại chủ đề chính, mặc dù. Nói chung, khi định nghĩa một lớp mới, chúng ta cũng tạo một







3 mới chứa tất cả các thuộc tính [biến và phương thức] liên quan đến lớp đó. Ngoài ra còn có một số thuộc tính có ý nghĩa đặc biệt, những thuộc tính bắt đầu và kết thúc bằng dấu gạch dưới kép_______24 và có liên quan đến tất cả các lớp. Ví dụ: thuộc tính






5 trả về chuỗi tài liệu của lớp đó hoặc






6, nếu không có chuỗi tài liệu nào được thêm vào

Để truy cập một thuộc tính lớp, hãy sử dụng toán tử dấu chấm [







7]

True
True
True
2

Đây là lớp đèn giao thông

True
True
True
3

Hàm







8 được định nghĩa bên trong lớp






9 ở trên là một ví dụ về phương thức lớp, trong khi biến
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
0 là một biến lớp

Khai báo đối tượng lớp trong Python

Chúng ta có thể gán một đối tượng lớp cho một biến, tạo một đối tượng mới [thể hiện] của lớp đó. Chúng tôi gọi quá trình này là khởi tạo. Một đối tượng lớp được gán cho một biến là một bản sao của lớp đó với các giá trị thực giúp phân biệt đối tượng này với các đối tượng khác trong cùng một lớp. Quay trở lại ví dụ ẩm thực của chúng ta, đó là một chiếc bánh làm từ 370g bột mì [khi phạm vi trong công thức là 350-400] và có trang trí kẹo trái cây bên trên, thay vì sô cô la

Một đối tượng lớp có các thuộc tính sau

  • trạng thái – dữ liệu [biến] của đối tượng
  • hành vi – các phương thức của đối tượng
  • danh tính – tên duy nhất của đối tượng

Hãy gán một đối tượng lớp của lớp







9 cho một biến
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
2

True
True
True
4

Đây là lớp đèn giao thông

True
True
True
5

Chúng tôi đã tạo một thể hiện đối tượng mới của lớp







9 được gọi là
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
2 và truy cập các thuộc tính của nó bằng cách sử dụng tên đối tượng [danh tính]. Lưu ý rằng lớp của đối tượng mới khác với lớp của chính lớp đó là
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
5 thay vì
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
6]. Ngoài ra, thuộc tính
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
7 trả về các giá trị khác nhau cho thể hiện của lớp và chính lớp đó. một đối tượng phương thức trong trường hợp đầu tiên và một đối tượng hàm trong trường hợp thứ hai. Gọi phương thức






8 trên đối tượng
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
2 [bằng cách chỉ định

0] cho kết quả "Go", hiện tại, là đầu ra khả dĩ duy nhất của phương thức này của lớp






9

Một điều quan trọng khác cần lưu ý trong đoạn mã trên là chúng ta đã sử dụng tham số


2 trong định nghĩa hàm bên trong lớp. Tuy nhiên, khi chúng tôi gọi phương thức






8 trên đối tượng
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
2, chúng tôi đã không thêm bất kỳ đối số nào. Đây là cách tham số

2 hoạt động. mỗi khi một thể hiện của lớp gọi một trong các phương thức của nó, thì chính đối tượng đó sẽ được truyền làm đối số đầu tiên. Nói cách khác,

0 tương đương với

7. Tổng quát hơn, khi chúng ta định nghĩa một phương thức lớp Python với một vài tham số, tạo một đối tượng của lớp này và gọi phương thức đó trên đối tượng, Python sẽ chuyển đổi nó dưới dạng sơ đồ sau


8 ➡️

9

Do đó, mọi phương thức lớp Python phải có tham số đầu tiên bổ sung này đại diện cho chính đối tượng đó, ngay cả khi nó không có bất kỳ tham số nào khác. Nên gọi nó là


2, theo quy ước đặt tên Python

Hãy làm cho lớp học







9 của chúng ta có ý nghĩa hơn, đồng thời giới thiệu một phương pháp đặc biệt mới

True
True
True
6
True
True
True
7

Chúng ta sử dụng phương thức

import pandas as pd
import numpy as np

s = pd.Series[{'a': 1, 'b': 2}]
df = pd.DataFrame[s]
arr = np.array[[1, 2, 3]]

print[s.__class__]
print[df.__class__]
print[arr.__class__]
2 [hay còn gọi là
import pandas as pd
import numpy as np

s = pd.Series[{'a': 1, 'b': 2}]
df = pd.DataFrame[s]
arr = np.array[[1, 2, 3]]

print[s.__class__]
print[df.__class__]
print[arr.__class__]
3] để khởi tạo trạng thái của đối tượng [i. e. , để gán tất cả các biến lớp tại thời điểm khởi tạo đối tượng]. Trong trường hợp này, chúng tôi đã tạo một lớp Python mới






9 với hai phương thức.
import pandas as pd
import numpy as np

s = pd.Series[{'a': 1, 'b': 2}]
df = pd.DataFrame[s]
arr = np.array[[1, 2, 3]]

print[s.__class__]
print[df.__class__]
print[arr.__class__]
5 để khởi tạo màu đèn giao thông và






8 để đề xuất hành động tương ứng dựa trên màu của đèn giao thông

Tạo và xóa thuộc tính đối tượng trong Python

Có thể thêm thuộc tính mới vào đối tượng lớp sau khi khởi tạo

True
True
True
8
True
True
True
9____00

Trong đoạn mã trên, chúng ta đã tạo một thuộc tính mới

import pandas as pd
import numpy as np

s = pd.Series[{'a': 1, 'b': 2}]
df = pd.DataFrame[s]
arr = np.array[[1, 2, 3]]

print[s.__class__]
print[df.__class__]
print[arr.__class__]
7 cho đối tượng 
import pandas as pd
import numpy as np

s = pd.Series[{'a': 1, 'b': 2}]
df = pd.DataFrame[s]
arr = np.array[[1, 2, 3]]

print[s.__class__]
print[df.__class__]
print[arr.__class__]
8 và gán thuộc tính đó là "red. " Vì thuộc tính này không có trong định nghĩa của
import pandas as pd
import numpy as np

s = pd.Series[{'a': 1, 'b': 2}]
df = pd.DataFrame[s]
arr = np.array[[1, 2, 3]]

print[s.__class__]
print[df.__class__]
print[arr.__class__]
9, nên khi chúng tôi cố gắng kiểm tra nó để tìm một đối tượng khác [
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
00], chúng tôi nhận được một
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
01

Chúng ta có thể xóa bất kỳ thuộc tính nào của một đối tượng lớp bằng cách sử dụng câu lệnh

a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
02

a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
1
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
2____03
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
4
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
5

Biến lớp và trường hợp

Sự khác biệt giữa các biến lớp và biến thể hiện là ở chỗ các giá trị của chúng được gán trong một định nghĩa lớp, định nghĩa này cũng xác định phạm vi của các biến

  • Biến lớp. được gán trong khai báo lớp nhưng bên ngoài bất kỳ định nghĩa phương thức nào [bao gồm cả hàm tạo của lớp]. Chúng có liên quan đến tất cả các thể hiện đối tượng của lớp đó
  • Biến thể hiện. được gán bên trong một phương thức lớp hoặc định nghĩa hàm tạo. Chúng là duy nhất cho từng thể hiện đối tượng của lớp đó
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
6
a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
7

Đối với tất cả các trường hợp lớp ở trên, chúng ta có cùng giá trị của biến

a = 5.2
b = 'Hello World'
c = [1, 2, 3]
d = False
e = range[4]
f = [1, 2, 3]
g = complex[1, -1]

for var in [a, b, c, d, e, f, g]:
    print[var.__class__]
03, đây là một biến lớp. Biến
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
0 được gán bên trong hàm tạo của lớp và biến
import pandas as pd
import numpy as np

s = pd.Series[{'a': 1, 'b': 2}]
df = pd.DataFrame[s]
arr = np.array[[1, 2, 3]]

print[s.__class__]
print[df.__class__]
print[arr.__class__]
7 được tính toán bên trong phương thức lớp






8 dựa trên giá trị của
def my_func[]:
    pass

print[my_func.__class__]
print[min.__class__]
0 cho mỗi thể hiện của lớp. Hai cái này là biến thể hiện

Sự kết luận

Tóm lại, chúng ta đã thảo luận về nhiều khía cạnh của việc tạo và sử dụng các lớp Python

  • Các lớp Python là gì và khi nào sử dụng chúng
  • Các loại lớp tích hợp Python khác nhau
  • Mối quan hệ giữa các thuật ngữ lớp và loại cho một đối tượng Python
  • Cách định nghĩa một lớp mới trong Python
  • Quy ước đặt tên Python cho các lớp
  • Thuộc tính lớp là gì và cách truy cập chúng
  • Cách khởi tạo một đối tượng lớp
  • Các thuộc tính của một đối tượng lớp
  • Tham số
    
    
    2 là gì và nó hoạt động như thế nào
  • Các thuộc tính của hàm tạo lớp
  • Cách truy cập, tạo hoặc xóa các thuộc tính đối tượng lớp
  • Sự khác biệt giữa các biến lớp và thể hiện

Bây giờ bạn đã có một bộ công cụ hoàn chỉnh để bắt đầu làm việc với các lớp trong Python

Học Python

Thông tin về các Tác giả

Elena Kosourova

Elena là nhà địa chất dầu khí và quản lý cộng đồng tại Dataquest. Bạn có thể thấy cô ấy trò chuyện trực tuyến với những người đam mê dữ liệu và viết hướng dẫn về các chủ đề khoa học dữ liệu. Tìm cô ấy trên LinkedIn

Phương thức nào khởi tạo một đối tượng lớp trong Python?

Hàm __init__ được gọi mỗi khi một đối tượng được tạo từ một lớp. Phương thức __init__ 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.

__ init __ được gọi là gì?

"__init__" là một phương thức được đặt lại trong các lớp python. Nó được gọi là hàm tạo trong thuật ngữ hướng đối tượng. Phương thức này được gọi khi một đối tượng được tạo từ một lớp và nó cho phép lớp khởi tạo các thuộc tính của lớp.

def __ init __[ self trong Python là gì?

__init__ là một trong những phương thức dành riêng trong Python . Trong lập trình hướng đối tượng, nó được gọi là hàm tạo. Phương thức __init__ có thể được gọi khi một đối tượng được tạo từ lớp và cần có quyền truy cập để khởi tạo các thuộc tính của lớp.

Việc sử dụng __ str __ là gì?

Trăn __str__[] . Phương thức này được gọi khi hàm print[] hoặc str[] được gọi trên một đối tượng. returns the string representation of the object. This method is called when print[] or str[] function is invoked on an object.

Chủ Đề