Chúng tôi có một đối tượng
def __init__[self, x, y]:
self.x = x
self.y = y
10 tại thời điểm này, nhưng đối tượng def __init__[self, x, y]:
self.x = x
self.y = y
10 này thực sự không có ý nghĩa gì vì nó không có chức năng [nó không lưu trữ bất kỳ dữ liệu hữu ích nào hoặc có bất kỳ phương thức nào]Chúng tôi có thể thêm các thuộc tính vào các đối tượng
def __init__[self, x, y]:
self.x = x
self.y = y
10 theo cách thủ công để lưu trữ một số dữ liệu về chúngNhưng làm như vậy sẽ là một chút ngớ ngẩn
Sẽ tốt hơn nếu bằng cách nào đó chúng ta có thể gọi lớp này với các đối số để tự động lưu trữ các thuộc tính
Phương thức khởi tạo
Hiện tại, nếu chúng ta cố gắng gọi lớp này bằng các đối số, chúng ta sẽ gặp lỗi
>>> p = Point[1, 2]
Traceback [most recent call last]:
File "", line 1, in
TypeError: Point[] takes no arguments
>>>
Để chấp nhận các đối số, chúng ta cần định nghĩa một phương thức
def __init__[self, x, y]:
self.x = x
self.y = y
13 trong lớp của chúng ta def __init__[self, x, y]:
self.x = x
self.y = y
Đối số đầu tiên trong phương thức
def __init__[self, x, y]:
self.x = x
self.y = y
13 của chúng ta sẽ luôn là >>> p = Point[]
>>> p
3 [giống như hầu hết mọi phương thức khác]. Sau đó, chúng ta cần khai báo bất kỳ đối số nào mà chúng ta muốn lớp của mình chấp nhậnĐiều chính mà bạn sẽ luôn thấy trong một phương thức
def __init__[self, x, y]:
self.x = x
self.y = y
13, là gán cho các thuộc tínhĐây là lớp
def __init__[self, x, y]:
self.x = x
self.y = y
10 mới của chúng tôiclass Point:
"""2-dimensional point."""
def __init__[self, x, y]:
self.x = x
self.y = y
Nếu chúng ta gọi nó như trước đây mà không có bất kỳ đối số nào, chúng ta sẽ thấy lỗi vì lớp này hiện yêu cầu hai đối số,
>>> p = Point[]
>>> p
6 và >>> p = Point[]
>>> p
7>>> p = Point[]
Traceback [most recent call last]:
File "", line 1, in
TypeError: __init__[] missing 2 required positional arguments: 'x' and 'y'
Chúng ta cần cung cấp cho lớp
def __init__[self, x, y]:
self.x = x
self.y = y
10 của mình hai đối số để có được một thể hiện mới của lớp nàyĐối tượng
def __init__[self, x, y]:
self.x = x
self.y = y
10 này hiện có thuộc tính >>> p = Point[]
>>> p
6 và thuộc tính >>> p = Point[]
>>> p
7Điều đó có nghĩa là phương pháp
def __init__[self, x, y]:
self.x = x
self.y = y
13 của chúng tôi được gọi làPython gọi def __init__[self, x, y]:
self.x = x
self.y = y
13 bất cứ khi nào một lớp được gọi
def __init__[self, x, y]:
self.x = x
self.y = y
Bất cứ khi nào bạn gọi một lớp, Python sẽ xây dựng một thể hiện mới của lớp đó, sau đó gọi phương thức
def __init__[self, x, y]:
self.x = x
self.y = y
13 của lớp đó, chuyển thể hiện mới được tạo làm đối số đầu tiên [>>> p = Point[]
>>> p
3]Không giống như nhiều ngôn ngữ lập trình,
def __init__[self, x, y]:
self.x = x
self.y = y
13 không được gọi là "phương thức xây dựng"Phương thức
def __init__[self, x, y]:
self.x = x
self.y = y
13 của Python được gọi là phương thức khởi tạo. Phương thức khởi tạo khởi tạo thể hiện lớp mới của chúng ta. Vì vậy, tại thời điểm mà phương thức khởi tạo được gọi là thể hiện của lớp đã được xây dựngBản tóm tắt
Khi bạn tạo một lớp mới trong Python, phương thức đầu tiên bạn có thể sẽ tạo là phương thức
def __init__[self, x, y]:
self.x = x
self.y = y
13. Phương thức def __init__[self, x, y]:
self.x = x
self.y = y
13 cho phép bạn chấp nhận các đối số cho lớp của mìnhQuan trọng hơn, phương thức
def __init__[self, x, y]:
self.x = x
self.y = y
13 cho phép bạn gán các giá trị ban đầu cho các thuộc tính khác nhau trên các cá thể lớp của bạn Điều kiện tiên quyết – Lớp Python, Đối tượng, Bản thân Bất cứ khi nào lập trình hướng đối tượng được thực hiện bằng Python, chúng ta hầu như bắt gặp phương thức __init__ trong rất tiếc mà chúng ta thường không hiểu đầy đủ. Bài viết này giải thích khái niệm chính về __init__ nhưng trước khi hiểu về __init__, cần có một số điều kiện tiên quyết
__init__ trong Python là gì?
Trình xây dựng __init__ mặc định trong C++ và Java. Constructor được sử dụng để khởi tạo trạng thái của đối tượng. Nhiệm vụ của constructor là khởi tạo [gán giá trị] cho các thành viên dữ liệu của lớp khi một đối tượng của lớp được tạo. 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 [i. e. hướng dẫn] được thực thi tại thời điểm tạo Đối tượng. Nó được chạy ngay khi một đối tượng của một lớp đượ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 đối tượng của mình
Thí dụ.
Python3
def __init__[self, x, y]:
self.x = x
self.y = y
27 def __init__[self, x, y]:
self.x = x
self.y = y
28 def __init__[self, x, y]:
self.x = x
self.y = y
29
def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
31 def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
00 def __init__[self, x, y]:
self.x = x
self.y = y
01______102 def __init__[self, x, y]:
self.x = x
self.y = y
03 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
02 def __init__[self, x, y]:
self.x = x
self.y = y
06 def __init__[self, x, y]:
self.x = x
self.y = y
07 def __init__[self, x, y]:
self.x = x
self.y = y
08
def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
90 def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
00 def __init__[self, x, y]:
self.x = x
self.y = y
93____102 def __init__[self, x, y]:
self.x = x
self.y = y
95 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
97 def __init__[self, x, y]:
self.x = x
self.y = y
98 def __init__[self, x, y]:
self.x = x
self.y = y
99>>> p = Point[]
>>> p
80 def __init__[self, x, y]:
self.x = x
self.y = y
02>>> p = Point[]
>>> p
82
>>> p = Point[]
>>> p
83 def __init__[self, x, y]:
self.x = x
self.y = y
07 >>> p = Point[]
>>> p
85____286>>> p = Point[]
>>> p
87>>> p = Point[]
>>> p
88đầu ra
class Point:
"""2-dimensional point."""
def __init__[self, x, y]:
self.x = x
self.y = y
7Hiểu mã
Trong ví dụ trên, một người tên Nikhil được tạo. Trong khi tạo một người, “Nikhil” được truyền dưới dạng đối số, đối số này sẽ được truyền cho phương thức __init__ để khởi tạo đối tượng. Từ khóa self đại diện cho thể hiện của một lớp và liên kết các thuộc tính với các đối số đã cho. Tương tự, nhiều đối tượng của lớp Person có thể được tạo bằng cách chuyển các tên khác nhau làm đối số. Dưới đây là ví dụ về init trong python với các tham số
Ví dụ về __init__
Python3
def __init__[self, x, y]:
self.x = x
self.y = y
27 def __init__[self, x, y]:
self.x = x
self.y = y
28 def __init__[self, x, y]:
self.x = x
self.y = y
29
def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
31 def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
00 def __init__[self, x, y]:
self.x = x
self.y = y
01______102 def __init__[self, x, y]:
self.x = x
self.y = y
03 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
02 def __init__[self, x, y]:
self.x = x
self.y = y
06 def __init__[self, x, y]:
self.x = x
self.y = y
07 def __init__[self, x, y]:
self.x = x
self.y = y
08
def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
90 def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
00 def __init__[self, x, y]:
self.x = x
self.y = y
93____102 def __init__[self, x, y]:
self.x = x
self.y = y
95 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
97 def __init__[self, x, y]:
self.x = x
self.y = y
98 def __init__[self, x, y]:
self.x = x
self.y = y
99>>> p = Point[]
>>> p
80 def __init__[self, x, y]:
self.x = x
self.y = y
02>>> p = Point[]
>>> p
82
def __init__[self, x, y]:
self.x = x
self.y = y
298 def __init__[self, x, y]:
self.x = x
self.y = y
299 def __init__[self, x, y]:
self.x = x
self.y = y
07 >>> p = Point[]
>>> p
85______286>>> p = Point[]
>>> p
87 def __init__[self, x, y]:
self.x = x
self.y = y
304 def __init__[self, x, y]:
self.x = x
self.y = y
07 >>> p = Point[]
>>> p
85______1307>>> p = Point[]
>>> p
87 def __init__[self, x, y]:
self.x = x
self.y = y
309 def __init__[self, x, y]:
self.x = x
self.y = y
07 >>> p = Point[]
>>> p
85______1312>>> p = Point[]
>>> p
87
def __init__[self, x, y]:
self.x = x
self.y = y
314 def __init__[self, x, y]:
self.x = x
self.y = y
315 def __init__[self, x, y]:
self.x = x
self.y = y
316đầu ra
def __init__[self, x, y]:
self.x = x
self.y = y
0__init__ với thừa kế
Kế thừa là khả năng của một lớp kế thừa hoặc kế thừa các thuộc tính từ một số lớp khác. Hãy xem xét ví dụ dưới đây để xem cách __init__ hoạt động trong thừa kế.
Python3
def __init__[self, x, y]:
self.x = x
self.y = y
317 def __init__[self, x, y]:
self.x = x
self.y = y
318 def __init__[self, x, y]:
self.x = x
self.y = y
319
def __init__[self, x, y]:
self.x = x
self.y = y
28 def __init__[self, x, y]:
self.x = x
self.y = y
301 def __init__[self, x, y]:
self.x = x
self.y = y
302 def __init__[self, x, y]:
self.x = x
self.y = y
95 def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
00 def __init__[self, x, y]:
self.x = x
self.y = y
01____102 def __init__[self, x, y]:
self.x = x
self.y = y
308 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
97____198 def __init__[self, x, y]:
self.x = x
self.y = y
002>>> p = Point[]
>>> p
87 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
02 def __init__[self, x, y]:
self.x = x
self.y = y
006 def __init__[self, x, y]:
self.x = x
self.y = y
07 def __init__[self, x, y]:
self.x = x
self.y = y
008
def __init__[self, x, y]:
self.x = x
self.y = y
28 def __init__[self, x, y]:
self.x = x
self.y = y
010 def __init__[self, x, y]:
self.x = x
self.y = y
30 def __init__[self, x, y]:
self.x = x
self.y = y
00 def __init__[self, x, y]:
self.x = x
self.y = y
01____102 def __init__[self, x, y]:
self.x = x
self.y = y
308 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
017 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
019 def __init__[self, x, y]:
self.x = x
self.y = y
02 def __init__[self, x, y]:
self.x = x
self.y = y
021 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
97 def __init__[self, x, y]:
self.x = x
self.y = y
98 def __init__[self, x, y]:
self.x = x
self.y = y
025>>> p = Point[]
>>> p
87 def __init__[self, x, y]:
self.x = x
self.y = y
04 def __init__[self, x, y]:
self.x = x
self.y = y
02 def __init__[self, x, y]:
self.x = x
self.y = y
006 def __init__[self, x, y]:
self.x = x
self.y = y
07 def __init__[self, x, y]:
self.x = x
self.y = y
008
def __init__[self, x, y]:
self.x = x
self.y = y
032 def __init__[self, x, y]:
self.x = x
self.y = y
07 def __init__[self, x, y]:
self.x = x
self.y = y
034 def __init__[self, x, y]:
self.x = x
self.y = y
035>>> p = Point[]
>>> p
87đầu ra
def __init__[self, x, y]:
self.x = x
self.y = y
9Vì vậy, hàm tạo của lớp cha được gọi trước. Nhưng trong Python, không bắt buộc hàm tạo của lớp cha sẽ luôn được gọi trước. Thứ tự gọi phương thức __init__ cho lớp cha hoặc lớp con có thể được sửa đổi. Điều này có thể được thực hiện đơn giản bằng cách gọi hàm tạo của lớp cha sau phần thân của hàm tạo của lớp con.