Bạn có thể gọi __ init __ Python không?
Python, không giống như các ngôn ngữ gõ tĩnh như Java, cho phép hoàn toàn tự do khi gọi các phương thức trong quá trình khởi tạo đối tượng. Tuy nhiên, các nguyên tắc hướng đối tượng tiêu chuẩn áp dụng cho các lớp Python sử dụng hệ thống phân cấp kế thừa sâu. Do đó, nhà phát triển có trách nhiệm đảm bảo rằng các đối tượng được khởi tạo đúng cách khi có nhiều phương thức #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 cần được gọi Show Gọi một phương thức #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 nhiều lần trong quá trình khởi tạo đối tượng có nguy cơ đối tượng được khởi tạo không chính xác. Không chắc rằng phương pháp #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 có liên quan được thiết kế để được gọi nhiều lần Có một số cách mà một phương thức #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 có thể được gọi nhiều lần
Sự giới thiệu¶Hãy cẩn thận để không gọi một phương thức #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 một cách rõ ràng nhiều lần hoặc sử dụng #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 trong toàn bộ hệ thống phân cấp thừa kế Ngoài ra, cấu trúc lại một hoặc nhiều lớp để sử dụng thành phần thay vì kế thừa Thí dụ¶Trong ví dụ đầu tiên, các cuộc gọi rõ ràng tới #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 được sử dụng, nhưng #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass4 gọi nhầm cả hai #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass5 và #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass6. Điều này có thể được khắc phục bằng cách loại bỏ cuộc gọi đến #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass5, như được hiển thị trong #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass8 #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass Trong ví dụ thứ hai, có sự kết hợp giữa các lệnh gọi rõ ràng tới #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 và các lệnh gọi sử dụng #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0. Để khắc phục ví dụ này, nên sử dụng #Calling a method multiple times by using explicit calls when a base inherits from other base class Vehicle(object): def __init__(self): self.mobile = True class Car(Vehicle): def __init__(self): Vehicle.__init__(self) self.car_init() def car_init(self): pass class SportsCar(Car, Vehicle): # Vehicle.__init__ will get called twice def __init__(self): Vehicle.__init__(self) Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass #Fix SportsCar by only calling Car.__init__ class FixedSportsCar(Car, Vehicle): def __init__(self): Car.__init__(self) self.sports_car_init() def sports_car_init(self): pass0 xuyên suốt Bạn có thể gọi các phương thức trong __ init __ không?Gọi các phương thức khác từ phương thức __init__
. Đoạn mã trên sẽ in đầu ra sau. Xin chào từ phương thức __init__. We can call other methods of the class from the __init__ method by using the self keyword. The above code will print the following output. Hello from the __init__ method.
__ init __ có được gọi tự động không?Ghi chú. Hàm __init__() được gọi tự động mỗi khi lớp được sử dụng để tạo đối tượng mới .
Bạn có thể quay lại trong __ init __ không?__init__ được yêu cầu trả về Không có . Bạn không thể (hoặc ít nhất là không nên) trả lại thứ khác. Hãy thử làm bất cứ thứ gì bạn muốn để trả về một biến thể hiện (hoặc hàm).
__ init __ có cần thiết trong Python không?__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 |