Hướng dẫn python return string from class - chuỗi trả về python từ lớp

Nếu bạn muốn f1() trả về một chuỗi, thì hãy làm như vậy:

def f1(self, otherthing):
    return '{} and {}'.format(self.thing, otherthing)

Ở đây chúng tôi sử dụng

def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
0 để đặt
def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
1 và
def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
2 cùng nhau thành một chuỗi mới, được trả về. Lưu ý rằng bạn cần tham khảo rõ ràng
def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
1 ở đây.

Bạn cũng có thể sử dụng kết nối chuỗi, như trong mã của riêng bạn:

def f1(self, otherthing):
    return self.thing + ' and ' + otherthing

Nhưng một lần nữa, bạn cần phải tham khảo rõ ràng

def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
1.

Demo:

>>> class Test:
...     def __init__(self, thing):
...         self.thing = thing
...     def f1(self, otherthing):
...         return '{} and {}'.format(self.thing, otherthing)
... 
>>> a = Test("apples")
>>> a.f1("cinnamon")
'apples and cinnamon'

Chúng tôi sẽ xem xét hai hàm đối tượng Python quan trọng rất hữu ích trong việc gỡ lỗi mã Python bằng cách đăng nhập thông tin hữu ích liên quan đến đối tượng.

Python __str __ ()

Phương thức này trả về biểu diễn chuỗi của đối tượng. Phương pháp này được gọi là khi hàm

def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
5 hoặc
def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
6 được gọi trên một đối tượng. Phương thức này phải trả về đối tượng chuỗi. Nếu chúng tôi không thực hiện hàm __STR __ () cho một lớp, thì việc triển khai đối tượng tích hợp được sử dụng thực sự gọi chức năng __repr __ ().

Python __repr __ ()

Chức năng Python __repr __ () trả về biểu diễn đối tượng trong định dạng chuỗi. Phương pháp này được gọi là khi hàm

def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
7 được gọi trên đối tượng. Nếu có thể, chuỗi được trả về phải là biểu thức Python hợp lệ có thể được sử dụng để tái tạo lại đối tượng.

Bạn nên luôn luôn sử dụng các hàm str () và repr (), sẽ gọi các hàm __str__ và __repr__ bên dưới. Nó không phải là một ý tưởng tốt để sử dụng các chức năng này trực tiếp.

Điều gì khác biệt giữa __str và __repr__?

Nếu cả hai hàm trả về các chuỗi, được cho là biểu diễn đối tượng, thì điều gì khác biệt? Chà, hàm __str__ được cho là trả về định dạng có thể đọc được của con người, rất tốt để ghi nhật ký hoặc hiển thị một số thông tin về đối tượng. Trong khi đó, hàm __repr__ được cho là sẽ trả về một đại diện chuỗi chính thức của đối tượng, có thể được sử dụng để xây dựng lại đối tượng. Hãy cùng xem xét một số ví dụ dưới đây để hiểu sự khác biệt này theo cách tốt hơn.

Python __str__ và __repr__ ví dụ

Hãy cùng nhìn vào một lớp tích hợp trong đó cả hai chức năng __str__ và __repr__ được xác định.

>>> import datetime
>>> now = datetime.datetime.now()
>>> now.__str__()
'2020-12-27 22:28:00.324317'
>>> now.__repr__()
'datetime.datetime(2020, 12, 27, 22, 28, 0, 324317)'

Nó rõ ràng từ đầu ra rằng __str __ () thân thiện hơn với con người trong khi __repr __ () có nhiều thông tin phong phú và thân thiện với máy và có thể được sử dụng để tái tạo lại đối tượng. Trong thực tế, chúng ta có thể sử dụng hàm repr () với eval () để xây dựng đối tượng.

>>> now1 = eval(repr(now))
>>> now == now1
True

Cả hai chức năng này đều được sử dụng để gỡ lỗi, hãy để xem điều gì xảy ra nếu chúng ta không xác định các chức năng này cho một đối tượng tùy chỉnh.

class Person:

    def __init__(self, person_name, person_age):
        self.name = person_name
        self.age = person_age

p = Person('Pankaj', 34)

print(p.__str__())
print(p.__repr__())

Output:

<__main__.Person object at 0x10ff22470>
<__main__.Person object at 0x10ff22470>

Như bạn có thể thấy rằng việc thực hiện mặc định là vô dụng. Hãy để đi trước và thực hiện cả hai phương pháp này.

class Person:

    def __init__(self, person_name, person_age):
        self.name = person_name
        self.age = person_age

    def __str__(self):
        return f'Person name is {self.name} and age is {self.age}'

    def __repr__(self):
        return f'Person(name={self.name}, age={self.age})'


p = Person('Pankaj', 34)

print(p.__str__())
print(p.__repr__())

Output:

Person name is Pankaj and age is 34
Person(name=Pankaj, age=34)

Trước đó, chúng tôi đã đề cập rằng nếu chúng tôi không thực hiện chức năng __str__ thì hàm __repr__ được gọi. Chỉ cần bình luận việc triển khai chức năng __STR__ từ lớp người và

def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
8 sẽ in
def f1(self, otherthing):
    return self.thing + ' and ' + otherthing
9.

Bản tóm tắt

Cả __str__ và __repr__ Chức năng Trả về Truy cập chuỗi biểu diễn của đối tượng. Đại diện chuỗi __str__ được cho là thân thiện với con người và chủ yếu được sử dụng cho mục đích ghi nhật ký, trong khi biểu diễn __repr__ được cho là chứa thông tin về đối tượng để có thể xây dựng lại. Bạn không bao giờ nên sử dụng các chức năng này trực tiếp và luôn sử dụng các hàm str () và repr ().

Bạn có thể kiểm tra tập lệnh Python hoàn chỉnh và nhiều ví dụ về Python từ kho lưu trữ GitHub của chúng tôi.

Làm thế nào để bạn triển khai một lớp để trả về một chuỗi trong Python?

Python __str __ () Phương thức này được gọi là khi in () hoặc str () hàm được gọi trên một đối tượng. Phương thức này phải trả về đối tượng chuỗi. Nếu chúng ta không thực hiện hàm __STR __ () cho một lớp, thì việc triển khai đối tượng tích hợp được sử dụng thực sự gọi hàm __repr __ (). This method is called when print() or str() function is invoked on an object. This method must return the String object. If we don't implement __str__() function for a class, then built-in object implementation is used that actually calls __repr__() function.

Làm thế nào để bạn trả về một giá trị từ một lớp trong Python?

ClassMethod () là một hàm sẵn có trong Python, trả về một phương thức lớp cho một hàm nhất định.;.
Cú pháp: classMethod (hàm).
Tham số: Hàm này chấp nhận tên hàm dưới dạng tham số ..
Loại trả về: Hàm này trả về phương thức lớp đã chuyển đổi ..

Phương pháp __ str __ được sử dụng để làm gì?

Phương thức __str__ trong Python đại diện cho các đối tượng lớp dưới dạng chuỗi - nó có thể được sử dụng cho các lớp.Phương pháp __str__ nên được xác định theo cách dễ đọc và xuất ra tất cả các thành viên của lớp.Phương pháp này cũng được sử dụng như một công cụ gỡ lỗi khi các thành viên của một lớp cần được kiểm tra.

Def __ str __ là gì (bản thân trong Python?

def str (self): là một phương thức python được gọi là khi chúng ta sử dụng print/str để chuyển đổi đối tượng thành một chuỗi.