【发布时间】:2019-01-11 21:57:28
【问题描述】:
我已接受@dtanabe 对这个问题的回答 这是我的代码
def abc(): pass
x = abc
class label:
def __init__(self,fnname):
self.lbl = fnname
def __repr__(self):
repr(self.lbl)
def __str__(self):
# how should this be defined?
# I have no objection if other class functions
# or variables need to be defined
u = label(x)
我希望print(u) 在屏幕上回复abc(三个字符),print([u]) 回复[abc](五个字符)。在这两种情况下,我都不想在屏幕上看到长度为 3 或 5 的字符串附近的任何单引号或双引号。
当然,我想要函数abcdefg 的类似行为,print(u) 在屏幕上产生abcdefg,print([u]) 在屏幕上产生[abcdefg]。
你的回答可以改变类的定义,但不允许改变类定义之外的任何东西。
【问题讨论】:
-
函数名在它的
.__name__属性中 -
@juanpa.arrivillaga 不是在
.__name__吗? -
@rassar 哎呀,是的
-
所以
return self.lbl.__name__。请注意,fname是该参数的错误名称,它采用 函数,而不是函数名称 -
u = label(x)似乎没有正确缩进。
标签: python python-3.x string function