Hướng dẫn everything in python - mọi thứ trong python

Nội dung chính ShowShow

  • Người vận hành quá tải trong Python sử dụng các phương thức Dunder
  • Gọi thủ công các phương thức Dunder
  • Phương pháp Dunder cung cấp năng lượng cho một số chức năng tích hợp
  • Bạn có thể sử dụng các phương thức Dunder để quá tải các toán tử
  • Mọi thứ có phải là một đối tượng không?
  • Mọi thứ có phải là Python là một chuỗi không?
  • Có phải tất cả các loại đối tượng trong Python?
  • Mọi thứ có phải là một đối tượng trong lập trình không?

Đăng nhập vào tài khoản Python Barsels của bạn để lưu cài đặt screencast của bạn.

Vẫn chưa có tài khoản? Đăng ký tại đây.

Hãy nói về cách các tác giả thư viện của bên thứ ba sử dụng các phương thức Dunder để làm cho các đối tượng Python của họ cảm thấy như các đối tượng Python bản địa.dunder methods to make their Python objects feel like native Python objects.dunder methods to make their Python objects feel like native Python objects.

Người vận hành quá tải trong Python sử dụng các phương thức Dunder

Hãy thêm hai biến,

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
1 và
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
2:

>>> x = 2
>>> y = 3
>>> x + y
5

Khi Python thực thi mã này, nó đã gọi phương thức

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
3 trên
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
1, vượt qua nó
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
2:

Phương pháp

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
3 được phát âm là "Dunder ADD", Dunder như trong Double Undercore vì nó bắt đầu và kết thúc bằng hai dấu gạch dưới.double underscore because it starts and ends with two underscores.double underscore because it starts and ends with two underscores.

Nếu chúng ta tìm kiếm sự giúp đỡ trên

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
1 (chỉ vào một số nguyên), chúng ta sẽ thấy có rất nhiều phương thức dunder (tất cả các phương pháp có tên

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
3):
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...

Một phương pháp Dunder hoạt động như một hợp đồng giữa thông dịch viên Python và người đã tạo ra một lớp Python cụ thể.dunder method acts as a contract between the Python interpreter and the person who made a particular Python class.dunder method acts as a contract between the Python interpreter and the person who made a particular Python class.

Người đã tạo ra lớp

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
4 đã xác định phương thức
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
3 để cho Python biết rằng biểu tượng
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
6 hoạt động trên các đối tượng
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
4.

Bổ sung phụ thuộc vào một phương pháp dunder, nhưng nhiều hoạt động khác cũng vậy. Trong thực tế, khi bạn cố gắng hỏi liệu hai điều có bình đẳng không, điều đó sử dụng phương pháp

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
8. Ngay cả bình đẳng cũng dựa vào các phương pháp dunder trong Python!

Gọi thủ công các phương thức Dunder

Phương pháp Dunder là một hợp đồng giữa người đã tạo ra lớp học và chính Python. Là lập trình viên Python, chúng tôi không nên gọi các phương thức Dunder trực tiếp. Thay vào đó, chúng tôi có nghĩa là sử dụng các hoạt động cấp cao (như các toán tử

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
6 và
>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
0) dựa vào các phương thức Dunder đó.not supposed to call dunder methods directly. Instead, we're meant to use the high-level operations (like the
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
6 and
>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
0 operators) that rely on those dunder methods.not supposed to call dunder methods directly. Instead, we're meant to use the high-level operations (like the
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
6 and
>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
0 operators) that rely on those dunder methods.

Hãy xem một ví dụ về lý do tại sao chúng ta không nên gọi các phương thức Dunder trực tiếp.

Nếu chúng ta kiểm tra sự bình đẳng giữa số nguyên và số điểm nổi bằng cách gọi thủ công

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
8, chúng ta sẽ thấy
>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
2:
>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
2 là một giá trị đặc biệt cho Python, như một số nguyên, tôi không biết cách kiểm tra bản thân để biết sự bình đẳng với số điểm nổi.

Vì vậy, Python sau đó phải hỏi

>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
4, số điểm nổi, "Bạn có bằng
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
2, số nguyên không?":

Nó nói

>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
6.

Đó là lý do

>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
7 thực sự hoạt động:

Chúng tôi phải làm mọi thứ (như kiểm tra bình đẳng ở đây), sử dụng toán tử

>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
0. Chúng tôi không nên sử dụng trực tiếp các phương thức Dunder. Công việc của Python là gọi các phương pháp Dunder; Công việc của chúng tôi là thực hiện hoạt động cấp cao thay thế.

Phương pháp Dunder cung cấp năng lượng cho một số chức năng tích hợp

Phương pháp Dunder trong các nhà khai thác năng lượng Python như

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
6,
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
00,
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
01 và
>>> y = 3
>>> z = 3.0
>>> y.__eq__(z)
NotImplemented
0. Họ cũng cung cấp năng lượng cho một số chức năng tích hợp.power some of the built-in functions.power some of the built-in functions.

Ví dụ: nếu bạn yêu cầu độ dài của một cái gì đó:

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
0

Điều đó dựa trên phương pháp

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
03:

Hàm

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
04 là một hàm tích hợp (trái ngược với phương pháp) vì Python đã quyết định rằng có độ dài là một thuộc tính cơ bản của một đối tượng. Vì vậy, Python có một chức năng tích hợp gọi là
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
04 ủy thác cho một phương thức Dunder được sử dụng để khám phá xem có một cái gì đó có độ dài và độ dài đó là bao nhiêu.

Có độ dài là tất cả về việc có một phương pháp

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
03:
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
8

Trên thực tế, nhiều điều dường như, hoàn toàn cơ bản đối với Python, như lập chỉ mục một danh sách, được cung cấp bởi các phương pháp Dunder.

Bất cứ khi nào bạn sử dụng dấu ngoặc vuông trên một đối tượng trong Python, phương thức

>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
07 được gọi là:
>>> help(x)
Help on int object:

class int(object)
 | ...
 |
 |  Methods defined here:
 |
 |  __abs__(self, /)
 |      abs(self)
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __and__(self, value, /)
 |      Return self&value.
 |
 |  __bool__(self, /)
 |      self != 0
 |
 | ...
0

Bạn có thể sử dụng các phương thức Dunder để quá tải các toán tử

Vì vậy, các phương pháp Dunder, sức mạnh khá nhiều tất cả các nhà khai thác trong Python và thậm chí một số chức năng tích hợp.

Một phương pháp Dunder là một phương pháp (mà Python biết đến), có hai dấu gạch dưới trước đó và hai dấu gạch dưới sau đó.

Đó là một hợp đồng giữa người thực hiện một lớp nhất định và thông dịch viên Python, biết khi nào nên gọi phương thức Dunder cụ thể đó.

Nếu bạn tạo các lớp học của riêng mình trong Python, bạn có thể sử dụng các phương thức Dunder để vận hành quá tải. Và đó thực sự là những gì các tác giả thư viện của bên thứ ba làm, để làm cho các đối tượng trong thư viện của họ hoạt động như các đối tượng Python bản địa.

Mọi thứ có phải là một đối tượng không?

Tất cả mọi thứ là một đối tượng trong các ngôn ngữ lập trình hướng đối tượng như Python, một đối tượng là một thực thể chứa dữ liệu cùng với siêu dữ liệu và/hoặc chức năng liên quan. Trong Python, mọi thứ đều là một đối tượng, có nghĩa là mọi thực thể đều có một số siêu dữ liệu (được gọi là thuộc tính) và chức năng liên quan (được gọi là phương thức). In object-oriented programming languages like Python, an object is an entity that contains data along with associated metadata and/or functionality. In Python everything is an object, which means every entity has some metadata (called attributes) and associated functionality (called methods). In object-oriented programming languages like Python, an object is an entity that contains data along with associated metadata and/or functionality. In Python everything is an object, which means every entity has some metadata (called attributes) and associated functionality (called methods).

Mọi thứ có phải là Python là một chuỗi không?

Vì Python là ngôn ngữ lập trình hướng đối tượng, và do đó mọi thứ trong Python là một đối tượng, mọi số nguyên, chuỗi, danh sách và chức năng.everything in Python is an object, every integer, string, list and functions.everything in Python is an object, every integer, string, list and functions.

Có phải tất cả các loại đối tượng trong Python?

Tất cả mọi thứ trong Python là một đối tượng bao gồm các lớp.Tất cả các lớp là các trường hợp của một lớp gọi là "loại".Đối tượng loại cũng là một thể hiện của loại loại.Bạn có thể kiểm tra hệ thống phân cấp kế thừa của lớp bằng cách kiểm tra thuộc tính __base__ của một đối tượng lớp.. All classes are instances of a class called "type". The type object is also an instance of type class. You can inspect the inheritance hierarchy of class by examining the __bases__ attribute of a class object.. All classes are instances of a class called "type". The type object is also an instance of type class. You can inspect the inheritance hierarchy of class by examining the __bases__ attribute of a class object.

Mọi thứ có phải là một đối tượng trong lập trình không?

- [Người hướng dẫn] Trong lập trình hướng đối tượng, mọi thứ đều là một đối tượng.Trong thực tế, chúng tôi đã làm việc với các đối tượng tất cả thời gian này.Bạn có thể không nhận ra nó.Hãy lấy một số nguyên đơn giản, int giá trị của tôi bằng năm.In object-oriented programming, everything is an object. In fact, we have been working with objects all this time. You might just not have realized it. Let's take a simple integer, int my value equals five.In object-oriented programming, everything is an object. In fact, we have been working with objects all this time. You might just not have realized it. Let's take a simple integer, int my value equals five.