类实例表示形式不是字符串

时间:2018-04-19 11:15:19

标签: python-3.x class return representation

我一直无法找到这个问题的答案,但也许我一直在问错误或者不知道正确的关键词。所以....

如何调用自定义类实例,让它返回除乱码之外的其他内容,还有除字符串以外的其他内容?

例如,如果我创建一个列表mylist = [1,2,3,4,5],然后在命令行中键入“mylist”,它将返回我创建的列表

mylist
Out[16]: [1, 2, 3, 4, 5]

对于Python的其他方面也是如此,例如数据框

a = pd.DataFrame()
a
Out[18]: 
Empty DataFrame
Columns: []
Index: []

如何使用自定义类进行类似的操作?类似的,调用类实例返回其定义属性之一,或类似的东西(除了字符串)。这可能(或典型的做法吗?)而不是返回

<__main__.MyClass at stuff>

感谢您的回复!

1 个答案:

答案 0 :(得分:1)

使用特殊方法__str____repr__

# Install backpack/generators
composer require backpack/generators --dev

# Install laracasts/generators
composer require laracasts/generators:dev-master --dev

# Publish configs, langs, views and AdminLTE files
php artisan vendor:publish --provider="Backpack\Base\BaseServiceProvider" --tag="minimum"

# Publish config for notifications - prologue/alerts
php artisan vendor:publish --provider="Prologue\Alerts\AlertsServiceProvider"

# Generate users table (using Laravel's default migrations)
php artisan migrate

示例:

class A:

    def __str__(self):
        # if __str__ isn't defined, it will default to __repr__
        return 'A description for print'

    def __repr__(self):
        return 'This description will appear in the REPL'