Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Phương thức __str__ trong Python
Trong bài viết này, bạn sẽ học cách sử dụng phương thức __str__
trong Python để tùy chỉnh cách hiển thị đối tượng của một lớp dưới dạng chuỗi. Phương thức __str__
cho phép bạn kiểm soát thông tin mà đối tượng sẽ hiển thị khi được gọi bằng hàm print()
, giúp cải thiện khả năng đọc và hiểu của mã nguồn khi làm việc với các đối tượng phức tạp.
Giới thiệu về phương thức __str__
trong Python
Hãy bắt đầu với ví dụ về lớp Person
:
class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age
Lớp Person
này có ba thuộc tính là first_name
(tên), last_name
(họ), và age
(tuổi).
Dưới đây là cách tạo một đối tượng mới từ lớp Person
và hiển thị nó:
Bài viết này được đăng tại [free tuts .net]
person = Person('John', 'Doe', 25) print(person)
Kết quả:
<__main__.Person object at 0x0000023CA16D13A0>
Khi bạn sử dụng hàm print()
để hiển thị đối tượng của lớp Person
, kết quả trả về sẽ là địa chỉ bộ nhớ của đối tượng đó, thay vì thông tin về đối tượng.
Trong nhiều trường hợp, sẽ hữu ích hơn nếu ta có thể tùy chỉnh cách hiển thị thông tin của đối tượng dưới dạng chuỗi. Để làm được điều này, bạn có thể triển khai phương thức đặc biệt __str__
trong lớp.
Phương thức __str__
sẽ được Python tự động gọi khi bạn sử dụng hàm str()
trên một đối tượng. Lưu ý rằng, hàm print()
sẽ tự động chuyển các đối tượng không phải từ khóa thành chuỗi bằng cách gọi hàm str()
trước khi hiển thị chúng.
Cách triển khai phương thức __str__
trong Python
Dưới đây là cách triển khai phương thức __str__
trong lớp Person
:
class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age def __str__(self): return f'Person({self.first_name}, {self.last_name}, {self.age})'
Với việc triển khai __str__
, khi bạn in một đối tượng của lớp Person
, Python sẽ gọi phương thức __str__
mà bạn đã định nghĩa. Ví dụ:
person = Person('John', 'Doe', 25) print(person)
Kết quả:
Person(John, Doe, 25)
Kết bài
Để tạo biểu diễn chuỗi ý nghĩa cho các đối tượng, việc triển khai phương thức __str__
là một bước quan trọng. Điều này không chỉ giúp cải thiện khả năng đọc hiểu của mã mà còn cung cấp thông tin hữu ích hơn khi in ra hoặc chuyển đổi đối tượng thành chuỗi, giúp việc gỡ lỗi và xử lý dữ liệu trở nên dễ dàng hơn.