Biến tự so với biến Python

Người đọc nên có kiến ​​thức trước về lớp, đối tượng và cấp phát bộ nhớ cho đối tượng. Bấm vào đây

Tóm tắt nhanh các khái niệm về lớp và đối tượng

Trong lớp học cuối cùng của chúng tôi, chúng tôi đã lấy một ví dụ google để hiểu lớp và đối tượng

Trong lớp google, chúng tôi đã có một biến đầu vào. Và một phương pháp tìm kiếm

Bất cứ khi nào chúng ta tạo một đối tượng, một bộ nhớ riêng sẽ được phân bổ cho từng đối tượng

Thí dụ

x=google(“Ấn Độ”) chúng ta đã tạo một đối tượng của lớp google, và chuỗi đầu vào là Ấn Độ

Một bộ nhớ riêng được cấp phát cho đối tượng x. Giả sử bộ nhớ được phân bổ tại vị trí 50

Trong bộ nhớ được phân bổ, đầu vào được lưu trữ. Trong ví dụ của chúng tôi, Ấn Độ được lưu trữ

Lấy thêm một đối tượng, y= google(“japan”). đối tượng y được gán một bộ nhớ mới và nhật bản đầu vào được lưu trữ trong bộ nhớ

Sự hiểu biết cơ bản về một đối tượng này được thảo luận trong các lớp trước của chúng ta

Thêm một định nghĩa cho đối tượng. Đối tượng là một thể hiện của một lớp

Bất cứ khi nào một đối tượng được xác định, một thể hiện riêng biệt sẽ được tạo. Tôi. e. , một bộ nhớ riêng biệt được tạo ra

Biến thể hiện

Các biến được lưu trữ trong bộ nhớ được cấp phát cho đối tượng được gọi là biến thể hiện

Trong ví dụ trên của chúng tôi, chuỗi đầu vào là một biến thể hiện

Lấy một mẫu và hiểu cách xác định hàm tạo và biến thể hiện

class Test:
     def __init__(self,k):
           self.instvar=k
     def f(self):
           print(self.instvar)
     def f1(self):
           M=40
           print(self.instvar+M)
x=Test(40)
y=Test(80)
x.f()

Trong chương trình trên, chúng ta có một lớp gọi là test

Trong lớp đó, chúng tôi có phương thức __init__. Và trong phương thức chúng ta có tham số self và tham số k

Chúng ta sẽ thảo luận về tham số self sau trong phần này

Chúng tôi có hai phương thức khác có tên là f và f1

Bất cứ khi nào chúng ta tạo một đối tượng. Trình thông dịch Python sẽ tự động gọi phương thức init

Thí dụ

x=Test(40) chúng tôi đã định nghĩa một đối tượng

Bất cứ khi nào chúng ta định nghĩa một đối tượng, một bộ nhớ riêng sẽ được cấp phát. Giả sử bộ nhớ được gán ở vị trí 50

Sơ đồ bộ nhớ được hiển thị bên dưới

bản thân

Sau khi xác định đối tượng, bộ nhớ riêng biệt được cấp phát và phương thức init gọi mặc định của python

Phương thức init trong ví dụ trên có một biến self. Biến self được gán tham chiếu của đối tượng

Trong ví dụ của chúng tôi, biến tự tham chiếu đến vị trí bộ nhớ 50. Việc phân bổ này được thực hiện tự động bởi trình thông dịch python

Biến đầu tiên trong phương thức init là self. Nếu chúng ta muốn định nghĩa một tham số khác, chúng ta định nghĩa nó sau tham số self

Đối với bất kỳ phương thức nào trong lớp Python, biến đầu tiên phải là self

Theo mặc định, Python gán tham chiếu đối tượng cho biến self

Trong ví dụ của chúng tôi, khi chúng tôi xác định đối tượng. Chúng tôi sử dụng giá trị 40

Giá trị 40 được gán cho tham số k. Không phải bản thân. Tham số đầu tiên, self, là một tham chiếu đối tượng

Hàm tạo

Phương thức init được định nghĩa trong lớp được gọi là phương thức khởi tạo

Theo mặc định, Python gọi phương thức khởi tạo khi một đối tượng được tạo

Trong phần thân của phương thức khởi tạo, chúng ta đã định nghĩa self. instvar=k

bản thân. instvar nói rằng hãy tạo một biến instvar trong bộ nhớ đối tượng

Trong đối tượng x, chúng ta có một biến instvar, và biến này đang tham chiếu đến giá trị 40

Các biến hiện diện trong đối tượng chúng ta gọi chúng là biến thể hiện

Trong ví dụ của chúng tôi, instvar là một biến thể hiện

Biến k trong phương thức init là biến cục bộ. Chúng ta có thể sử dụng biến k trong phương thức

Khái niệm biến cục bộ và biến toàn cục đã được thảo luận trước đây. Bấm vào đây

Ghi chú. Biến instvar là biến toàn cục cho lớp này. Bất kỳ phương thức nào trong lớp đều có thể sử dụng biến instvar

Các biến thể hiện có thể được sử dụng bởi bất kỳ phương thức nào trong lớp

Trong chương trình trên, một đối tượng nữa được tạo. y=Kiểm tra(80)

Một bộ nhớ mới được gán cho đối tượng mới này. Và biến instvar được cho giá trị 80

Giả sử bộ nhớ được phân bổ cho đối tượng y là vị trí 80

Bất cứ khi nào chúng ta gọi x. f(). chúng tôi đang gọi phương thức f sử dụng đối tượng x

Đối tượng x đang tham chiếu vị trí bộ nhớ 50. vì vậy biến tự được gán vị trí bộ nhớ 50

Phương thức f đang tự hiển thị. instvar. Bản thân đang trỏ đến bộ nhớ 50. vì vậy trong Bộ nhớ 50, biến instvar có giá trị là 40

Đầu ra hiển thị là 40

Điểm để hiểu

Mỗi đối tượng có các biến thể hiện riêng của nó

Lấy thêm một ví dụ để hiểu rõ hơn về khái niệm

class Test:
     def f(self):
           self.instvar=20
     def f1(self):
           print(self.instvar)
x=Test()
x.f()

Trong chương trình trên, chúng ta không có phương thức khởi tạo

Chúng tôi có phương pháp f và f1

Trong phương thức f, chúng tôi đang tạo một biến thể hiện và được gán giá trị 20

Điểm để hiểu

Chúng ta có thể định nghĩa các biến thể hiện không chỉ trong hàm tạo mà trong bất kỳ phương thức nào

Lý do để xác định các biến thể hiện trong phương thức khởi tạo?

Phương thức khởi tạo được gọi theo mặc định trong quá trình tạo đối tượng. Các phương thức còn lại không được gọi theo mặc định

Biến tự trong Python là gì?

Biến self được dùng để biểu diễn thể hiện của lớp thường được dùng trong lập trình hướng đối tượng. Nó hoạt động như một tham chiếu đến đối tượng. Python sử dụng tham số self để chỉ các thuộc tính và phương thức thể hiện của lớp.

Khi nào tôi nên sử dụng self trong Python?

Vì vậy, SELF nên được sử dụng khi bạn xác định một phương thức cá thể, vì nó được truyền tự động làm tham số đầu tiên khi phương thức được gọi. Bạn cũng nên sử dụng self trong Python khi tham chiếu một thuộc tính lớp từ bên trong một phương thức thể hiện

Sự khác biệt giữa bản thân và đối tượng trong Python là gì?

Sự khác biệt là trong một trường hợp, bạn gọi biến chứa thể hiện self và trong trường hợp khác, bạn gọi nó là đối tượng . Đó là sự khác biệt duy nhất. Biến self rõ ràng trong Python và bạn có thể gọi nó là bất cứ thứ gì bạn muốn. self chỉ là quy ước mà mọi người sử dụng để dễ đọc.

Sự khác biệt giữa bản thân và bản thân trong Python là gì?

Không có sự khác biệt giữa (self) và (self,) . Ưu điểm chính là nó làm cho danh sách nhiều dòng dễ chỉnh sửa hơn và giảm sự lộn xộn trong các khác biệt. Kiểm tra liên kết này. - Tại sao danh sách được phép sử dụng dấu phẩy ở cuối?