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__[]

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ọng

Hã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ác

Phương pháp chuyển nhượng tăng cường

Magic 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.

Chủ Đề