Magic methods (phép thuật) là những phương thức cho phép chúng ta làm một số thủ thuật khá hay trong lập trình hướng đối tượng. Các phương thức này được nhận diện bằng hai gạch dưới (__) được dùng như tiền tố và hậu tố. Ví dụ, hàm như các interceptor (người chặn) được tự động gọi khi một số điều kiện nhất định được đáp ứng.
Trong Python __repr__ là hàm built-in 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à hàm built-in tính toán biểu diễn chuỗi "không chính thức" của một đối tượng.
Mã ví dụ
class String:
# magic method để khởi tạo đối tượng
def __init__(self, string):
self.string = string
# Driver Code
if __name__ == '__main__':
# tạo đối tượng
my_string = String('Python')
# in vị trí đối tượng
print(my_string)
Đầu ra
<__main__.String object at 0x000000BF0D411908>
Mã ví dụ
class String:
# magic method để khởi tạo đối tượng
def __init__(self, string):
self.string = string
# in đối tượng chuỗi của chúng ta
def __repr__(self):
return 'Object: {}'.format(self.string)
# Driver Code
if __name__ == '__main__':
# tạo đối tượng
my_string = String('Python')
# in vị trí đối tượng
print(my_string)
Đầu ra
Object: Python
Chúng ta đang cố gắng thêm một chuỗi vào nó.
Mã ví dụ
class String:
# magic method để khởi tạo đối tượng
def __init__(self, string):
self.string = string
# in đối tượng chuỗi của chúng ta
def __repr__(self):
return 'Object: {}'.format(self.string)
# Driver Code
if __name__ == '__main__':
# tạo đối tượng
my_string = String('Python')
# nối chuỗi đối tượng String và một chuỗi
print(my_string + ' Program')
Đầu ra
TypeError: unsupported operand type(s) for +: 'String' and 'str'
Bây giờ thêm phương thức __add__ vào lớp String
Mã ví dụ
class String:
# magic method để khởi tạo đối tượng
def __init__(self, string):
self.string = string
# in đối tượng chuỗi của chúng ta
def __repr__(self):
return 'Object: {}'.format(self.string)
def __add__(self, other):
return self.string + other
# Driver Code
if __name__ == '__main__':
# tạo đối tượng
my_string = String('Hello')
# nối chuỗi đối tượng String và một chuỗi
print(my_string + ' Python')
Đầu ra
Hello Python