Làm thế nào để sử dụng các phương pháp ma thuật trong một lớp học?
Không. Python có thể tốt hơn nhiều ngôn ngữ ở nhiều khía cạnh nhưng nó không thể làm được điều kỳ diệu. Các phương thức ma thuật trong Python là những phương thức có hai dấu gạch dưới ở mỗi bên của tên. Một ví dụ về các phương thức ma thuật Python là __init__() Show
Các phương thức ma thuật được phát âm là dunder method_name dunder, đây là lý do các phương thức ma thuật đôi khi được gọi là các phương thức dunder Nhưng những phương pháp này có gì đặc biệt? Nạp chồng toán tử là gì? . Ví dụ: toán tử '+' có thể cộng hai số hoặc nối hai chuỗi với nhau Lý do tại sao '+' có thể thêm nhiều hơn một chuỗi là do các phương thức kỳ diệu này. Các phương thức kỳ diệu là lý do tại sao Python là một ngôn ngữ mạnh mẽ như vậy Lưu ý Mọi thứ trong Python đều là đối tượng. Một đối tượng là một mục dữ liệu cho Python. × Bỏ qua cảnh báo Phương pháp Magic hoặc Dunder quan trọngHãy cố gắng hiểu các phương pháp ma thuật quan trọng __mới__(cls, đối số)Khi một đối tượng được khởi tạo, đây là phương thức đầu tiên được gọi. Điều này không được sử dụng nhiều trong Python. Nó rất hữu ích khi bạn muốn phân lớp một loại bất biến như bộ hoặc chuỗi __new__ được gọi khi một đối tượng mới được tạo. Phương thức __init__ sau đó khởi tạo đối tượng đó Phương thức __new__ lấy tên lớp và bất kỳ đối số nào mà người dùng đã truyền và sau đó gửi nó đến phương thức __init__ cú pháp lớp Tên_của_lớp def __new__(cls, *args, **kwargs). ma cua ban trả lại siêu (tên_of_class, cls). __new__(cls, *args, **kwargs) Phương thức super() trả về các tham số name_of_class, đối tượng cls (một con trỏ tới lớp), các câu lệnh mã của bạn và các đối số Lưu ý Nếu cả __new__ và __init__ đều có trong mã lớp của bạn, thì bạn cũng có thể chọn thực thi phương thức __init__ của một lớp khác. Ngoài ra, bạn có thể chỉ cần bỏ qua phương thức __init__ của lớp có phương thức __new__. × Bỏ qua cảnh báo Hãy có một ví dụ để xem hoạt động của phương pháp dunder này Ví dụPhương thức __init__ sẽ chỉ được thực thi nếu __new__ trả về thứ gì đó. Vì vậy, nếu bạn xóa hàm super() khỏi đoạn mã trên, phương thức __init__ sẽ không in bất kỳ thứ gì Lưu ý quan trọng Nếu bạn không chỉ định phương thức __new__ khi tạo lớp, Python sẽ vẫn thực thi phương thức __init__. × Bỏ qua cảnh báo __init__(bản thân, lập luận)Phương thức __init__() hoạt động như một trình khởi tạo cho lớp. Điều này nhận được tất cả các đối số được truyền trong các tham số lớp. Nó được sử dụng phổ biến trong các lớp Python vì không có nó, một lớp sẽ không được khởi tạo Trong Python, phương thức __init__ còn được gọi là hàm tạo vì nó luôn được thực thi khi đối tượng hóa một lớp. Mục đích chính của nó là khởi tạo các biến mà chúng ta muốn sử dụng với các chức năng khác Hãy có một ví dụ về chức năng này Ví dụPhương thức __init__ không thể trả về bất cứ thứ gì. Nếu bạn cố gắng làm điều đó, Python sẽ báo lỗi. Nhưng loại lỗi nào, hãy kiểm tra với ví dụ dưới đây Ví dụĐiều này là do mục đích của phương thức __init__ là thay đổi trạng thái của phiên bản mới. Nó không thể trả lại bất cứ thứ gì ngoại trừ Không __repr__Phương thức ma thuật __repr__ trong Python được sử dụng để biểu diễn một đối tượng trong lớp dưới dạng chuỗi. Và, giống như các phương thức dunder được sử dụng ở trên, bạn có thể điều chỉnh biểu diễn của một chuỗi theo lựa chọn của mình Phương pháp này thường được sử dụng để gỡ lỗi mã. Hãy xem một ví dụ cho chức năng này Ví dụBạn có thể thêm một chuỗi vào đầu ra không? Ví dụNhư bạn có thể thấy, điều đó không hoạt động vì chúng thuộc các loại khác nhau. Để thêm chức năng này vào lớp của chúng ta, chúng ta sẽ sử dụng một phương thức kỳ diệu khác có tên __add__ __cộng__Phương pháp kỳ diệu __add__ cho toán tử dấu cộng ‘+‘. Chúng ta có thể sử dụng phương thức này để thêm một chuỗi mới vào đối tượng loại New_class ở đầu ra Để làm điều đó, chúng tôi sẽ sử dụng một ví dụ đơn giản hơn để tránh làm cho mã dài hơn Ví dụĐối với các hoạt động toán học khác như trừ, chia, v.v. , có các phương thức ma thuật, ví dụ: __sub__, __div__, v.v. __del__Phương thức ma thuật __del__ là một phương thức hoàn thiện. Python tự động gọi nó khi trình thu gom rác của Python đang hoạt động Rác trong Python được thu thập khi tất cả các tham chiếu đến đối tượng lớp đã bị xóa. Hay nói một cách đơn giản hơn, hàm này được gọi khi một hàm hoặc mã trong một lớp đã thực thi xong Hãy có một ví dụ về hoạt động của chức năng này Ví dụKhi chúng ta tạo một thể hiện của NewClass() mà không gán nó cho một biến, trình thu gom rác của Python sẽ theo dõi nó Sau đó, khi dòng mã cuối cùng, tôi. e. , câu lệnh in được thực thi, bộ thu gom rác của Python sẽ xóa hoàn toàn đối tượng NewClass() Lưu ý Điều tương tự cũng xảy ra khi bạn xóa một đối tượng bằng từ khóa del. Tuy nhiên, trong trường hợp đó, nó ngay lập tức. × Bỏ qua cảnh báo Danh sách các phương pháp Magic/Dunder quan trọng khácPhương pháp chuyển nhượng tăng cườngMagic MethodMethod Description__getattr__(self, name)Phương thức này được gọi khi bạn đang cố truy cập một thuộc tính không tồn tại của một lớp. __setattr__(self, name)Khi bạn gán một giá trị cho thuộc tính của một lớp, phương thức này sẽ được gọi. __delattr__(self, name)Được gọi khi xóa một thuộc tính của một lớp Bạn có thể cho một ví dụ về một phương pháp kỳ diệu?Một số ví dụ về phương pháp ma thuật là __init__, __len__, __repr__, __add__ , v.v.
Phương pháp ma thuật là gì?Các phương thức ma thuật là các phương thức đặc biệt ghi đè hành động mặc định của PHP khi một số hành động nhất định được thực hiện trên một đối tượng . thận trọng. Tất cả các tên phương thức bắt đầu bằng __ được dành riêng bởi PHP. Do đó, không nên sử dụng các tên phương thức như vậy trừ khi ghi đè hành vi của PHP.
Phương pháp kỳ diệu để tạo một thể hiện của một lớp là gì?Phương thức __repr__
. Phương thức __repr__, tạo ra một chuỗi ở đầu ra, được gọi tự động bất cứ khi nào chúng ta cố gắng in một đối tượng của lớp đó
phương pháp ma thuật giải thích với ví dụ là gì?Các phương thức ma thuật là các phương thức đặc biệt mà bạn có thể định nghĩa để thêm 'ma thuật' vào các lớp của mình . Chúng luôn được bao quanh bởi hai dấu gạch dưới, ví dụ: các phương thức ma thuật __init__ và __str__. Các phương thức ma thuật có thể làm phong phú thêm thiết kế lớp của chúng ta bằng cách cấp cho chúng ta quyền truy cập vào các tính năng cú pháp tích hợp sẵn của Python. |