我现在正在浏览优秀的Python koans,我可以通过一点google来理解其中的大部分内容,但这一点让我感到困惑(注意:__
变量是我必须找到的答案的占位符):
class AboutTuples(Koan):
# ....
def test_tuples_of_one_look_peculiar(self):
self.assertEqual(__, (1).__class__)
self.assertEqual(__, (1,).__class__)
self.assertEqual(__, ("Hello comma!", ))
我知道__class__
返回表达式的类型,所以在第一种情况下应该是“一个包含整数的元组”,对于其他两种情况。。。我不太确定,因为第一个元素后面有逗号。实际上,它失败了,我得到了这个输出:
You have not yet reached enlightenment ...
AssertionError: '-=> FILL ME IN! <=-' != <class 'int'>
如果您保留了占位符变量,这是通常的答案。接下来,我尝试了以下方法:
self.assertEqual("<class 'int'>", (1).__class__)
但我得到以下结果:
You have not yet reached enlightenment ...
AssertionError: "<class 'int'>" != <class 'int'>
所以很明显它不需要字符串,可能是某种类型的。。。我该如何用Python来表达这一点?其他两个测试用例的答案相似吗?你知道吗
编辑:Link to the exact koan,以防万一
(1)
不是元组;括号仅用于消除来自1.__class__
的属性访问的歧义,解析器将其解释为以1.
开头的格式错误的浮点文本。你知道吗(1,)
是一个元组。元组是由逗号定义的,而不是括号,这就是为什么可以用x = 1, 2
之类的东西来定义元组。(例外是空元组,它是()
,而不是(,)
。)同样地,
("Hello, world!",)
是一个包含一个字符串的元组。你知道吗至于应该用什么来替换
__
,__class__
解析为与对象关联的类对象,而不是字符串。您将分别使用int
和tuple
,作为示例中两次使用__class__
返回的类对象。你知道吗相关问题 更多 >
编程相关推荐