假设我有一个类:classMyClass:def__init__(self,**kwargs):self.kwargs=kwargsdef__repr__(self):return""%(self.__class__.__name__,self.kwargs)__repr__对于核心功能来说并不是很重要,但偶尔会被调用进行日志记录,出现在堆栈跟踪中等等,所以我想对其进行单元测试。问题类似于thatfacedwhenusingdoctest,但我宁愿在测试函数中保留任何复杂性(如排序),而不是在__repr__中。现在我正在使用eval和re从repr()调用中提取字典,但我想检查是否人
我观察到当一个人打字时help在Pythonrepl中,一个得到Typehelp()forinteractivehelp,...当一个类型help()有人被踢进帮助模式。我很确定这是因为site._Helper定义了__repr__()(对于第一个示例)和__call__()(对于第二个示例)).我喜欢这种行为(仅提示对象和可调用语法),并且我想对通过SWIG导出到Python的C++类执行相同的操作。这是我尝试做的一个简单示例helpMimic.h-----------classHelpMimic{public:HelpMimic(){};~HelpMimic(){};char*__
__repr__函数似乎有不同的返回方式。我有一个InfoObj类,它存储了很多东西,其中一些我并不特别希望类的用户自己设置。我认识到python中没有任何内容是protected,他们可以直接潜入并设置它,但似乎在__init__中定义它使得更有可能有人看到它并假设将它传递进去就可以了。(示例:验证函数在确定对象已完全填充时设置的bool值,以及在存储足够信息时从其他值计算的值...例如A=B+C,所以一旦设置了A和B,就会计算C,并且对象被标记为Valid=True。)那么,考虑到所有这些,哪种方法是设计__repr__输出的最佳方式?bob=InfoObj(Name="Bob")
这个问题在这里已经有了答案:Whatisthedifferencebetween__str__and__repr__?(28个答案)关闭9年前。我写这段代码:classItem:def__init__(self,name):self._name=name;def__str__(self):return"Item:%s"%self._name当我运行时print((Item("Car"),))输出是(,)当我将代码更改为:classItem:def__init__(self,name):self._name=name;def__repr__(self):return"Item:%s"%s
python的__repr__函数很花哨,因为它是在自动使用printOBJECT时调用的。它有ruby等价物吗?我以为是to_s,但是,我的pOBJECT似乎没有调用to_s方法。已添加我弄错了,pOBJECT似乎调用了to_s方法如下。我从我对其他问题的回答中得到了一些提示。-Ruby'sto_smethodquestion(fromAxebook2ndedition)#SamplecodefromProgramingRuby,page24classSongdefto_s"Song"endendclassSongson"endendsong=Songson.new()psong
我当前的项目需要大量使用位域。我找到了一个简单、实用的recipeforbitafieldclass但它缺少一些我需要的功能,所以我决定扩展它。我只需要实现__str__和__repr__并且我想确保我遵循约定。__str__应该是非正式和简洁的,所以我让它返回位字段的十进制值(即str(bitfield11)将是“3”。__repr__应该是对象的官方表示,所以我让它返回实际的位字符串(即repr(bitfield11)将是“11”)。您认为此实现是否符合str和repr的约定?此外,我还使用了bin()函数来获取存储在类中的值的位串。这与Python干杯,皮特
我正在使用一个小的Python脚本来生成一些将在C头文件中使用的二进制数据。此数据应声明为char[],如果可以将其编码为字符串(当它们不在ASCII可打印范围内时使用相关的转义序列)会更好chars)以保持header比使用十进制或十六进制数组编码更紧凑。问题是,当我打印Python字符串的repr时,它由单引号分隔,而C不喜欢这样。天真的解决方案是:'"%s"'%repr(data)[1:-1]但是当数据中的一个字节恰好是双引号时,这不起作用,所以我也需要对它们进行转义。我认为一个简单的replace('"','\\"')可以完成这项工作,但也许有更好、更pythonic的解决方案
printOBJECT调用OBJECT.__str__(),那么什么时候调用OBJECT.__repr__()?我看到当OBJECT.__str__()不存在时printOBJECT调用OBJECT.__repr__(),但我希望这不是唯一的调用__repr__()的方法。 最佳答案 repr(obj)通话obj.__repr____repr__的目的是它提供对象的“正式”表示,该对象应该是一个可以被求值来创建对象的表达式。也就是说,obj==eval(repr(obj))应该,但在实践中并不总是产生True我在评论中被问及何时ob
如果有人用python写了一个类,并且未能指定他们自己的__repr__()方法,然后为他们提供默认方法。但是,假设我们要编写一个与默认__repr__()具有相同或相似行为的函数。.但是,我们希望此函数具有默认行为__repr__()方法即使实际__repr__()因为类(class)重载了。也就是说,假设我们要编写一个与默认__repr__()具有相同行为的函数。不管是否有人重载了__repr__()方法与否。我们可以怎么做?classDemoClass:def__init__(self):self.var=4def__repr__(self):returnstr(self.var
我想要任何类的简单表示,比如{property=value},是否有自动__repr__? 最佳答案 最简单的方法:def__repr__(self):returnstr(self.__dict__) 关于python-自动__repr__方法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/750908/