如何在表达式中使用类?

2024-09-30 16:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在浏览优秀的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,以防万一


Tags: 答案selfyou类型havenot情况class
1条回答
网友
1楼 · 发布于 2024-09-30 16:21:39

(1)不是元组;括号仅用于消除来自1.__class__的属性访问的歧义,解析器将其解释为以1.开头的格式错误的浮点文本。你知道吗

(1,)是一个元组。元组是由逗号定义的,而不是括号,这就是为什么可以用x = 1, 2之类的东西来定义元组。(例外是空元组,它是(),而不是(,)。)

同样地,("Hello, world!",)是一个包含一个字符串的元组。你知道吗


至于应该用什么来替换____class__解析为与对象关联的类对象,而不是字符串。您将分别使用inttuple,作为示例中两次使用__class__返回的类对象。你知道吗

相关问题 更多 >