Computer >> Máy Tính >  >> Lập trình >> Python

Dunder hoặc các phương pháp ma thuật trong python

các phương thức ảo thuật cho phép chúng ta thực hiện một số thủ thuật khá gọn gàng trong lập trình hướng đối tượng. Các phương thức này được xác định bằng hai dấu gạch dưới (__) được sử dụng làm tiền tố và hậu tố. Ví dụ:hoạt động như các bộ chặn được tự động gọi khi đáp ứng các điều kiện nhất định.

Trong python __repr__ là một hàm tích hợp được sử dụng để tính toán biểu diễn chuỗi "chính thức" của một đối tượng, trong khi __str__ là một hàm tích hợp để tính toán biểu diễn chuỗi "không chính thức" của một đối tượng.

Mã mẫu

class String:
   # magic method to initiate object
   def __init__(self, string):
      self.string = string
# Driver Code
if __name__ == '__main__':
   # object creation
   my_string = String('Python')
   # print object location
   print(my_string)

Đầu ra

<__main__.String object at 0x000000BF0D411908>

Mã mẫu

class String:
   # magic method to initiate object
   def __init__(self, string):
      self.string = string
   # print our string object
   def __repr__(self):
      return 'Object: {}'.format(self.string)
# Driver Code
if __name__ == '__main__':
   # object creation
   my_string = String('Python')
   # print object location
   print(my_string)

Đầu ra

Object: Python

Chúng tôi đang cố gắng thêm một chuỗi vào nó.

Mã mẫu

class String:
   # magic method to initiate object
   def __init__(self, string):
      self.string = string
   # print our string object
   def __repr__(self):
      return 'Object: {}'.format(self.string)
# Driver Code
if __name__ == '__main__':
   # object creation
   my_string = String('Python')
   # concatenate String object and a string
   print(my_string + ' Program')

Đầu ra

TypeError: unsupported operand type(s) for +: 'String' and 'str'

Bây giờ hãy thêm phương thức __add__ vào lớp Chuỗi

Mã mẫu

class String:
   # magic method to initiate object
   def __init__(self, string):
      self.string = string
   # print our string object
   def __repr__(self):
      return 'Object: {}'.format(self.string)
   def __add__(self, other):
      return self.string + other
# Driver Code
if __name__ == '__main__':
   # object creation
   my_string = String('Hello')
   # concatenate String object and a string
   print(my_string +' Python')

Đầu ra

Hello Python