【问题标题】:Unorderable types: str() < float()不可排序的类型:str() < float()
【发布时间】:2020-04-27 19:21:42
【问题描述】:

我被要求通过定义一些变量来编写一个 python 脚本,并使用 'dir' 函数显示当前命名空间中定义的所有对象。这是我解决上述问题的程序。

a = 10
b = 3.14
s = "Hellow"
x = True
class any:
    def __dir__(self):
        return[a,b,s,x]
my_obj = any()
print(dir(my_obj))

但我收到错误

不可排序的类型:str()

请帮忙,谢谢

【问题讨论】:

标签: python


【解决方案1】:

dir 函数返回排序列表。因此,您返回的所有元素都应该具有相同的数据类型,以便对其进行排序。

在您的示例中,您正在传递不同数据类型的元素,因此 ```dir()`` 无法对其进行排序。

并且不要使用python关键字(如any、sum、list)作为类名或函数名

【讨论】:

  • 关于问题陈述的解决方案是否正确?
  • 检查解决方案
  • 它工作正常,根据我对问题的理解,答案是写的,但是当我在基于 Web 的培训窗口中写它时,它的回复是错误的答案
  • 不要使用python关键字作为类名或变量名。
  • 是的,我已经改变了,答案是正确的,但我希望你解释问题陈述,我们正在尝试的是正确的?
【解决方案2】:

根据documentationdir__dir__返回的键进行排序,所以它们必须具有可比性。而且,由于函数的意图是返回names,所以它们都应该是字符串。

至于您的分配,仅调用 dir() 不带参数已经返回当前命名空间中定义的所有名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多