Python数据类给了我“function”对象没有属性“\uu mro\uu”?

Python数据类给了我“function”对象没有属性“\uu mro\uu”?,python,anaconda,python-dataclasses,Python,Anaconda,Python Dataclasses,正如最后一个问题:,我在我的程序中发现了一个问题。即: 在Python中 集合0,0实际上给出了{0},但我想要{0,0} collections.deque 0,0[0,0].PopLeft实际上给了你0,0,而我想要0,0[0,0] 所以现在我在考虑设计自己的数据类。然而,在测试代码中,我遇到了一个“函数”对象没有属性mro问题 测试代码1: 测试代码1错误屏幕截图: 测试代码2: 测试代码2错误提示: 我的Python版本是Anaconda 3.6.8要设置的参数必须是一个iterabl

正如最后一个问题:,我在我的程序中发现了一个问题。即: 在Python中

集合0,0实际上给出了{0},但我想要{0,0} collections.deque 0,0[0,0].PopLeft实际上给了你0,0,而我想要0,0[0,0] 所以现在我在考虑设计自己的数据类。然而,在测试代码中,我遇到了一个“函数”对象没有属性mro问题

测试代码1:

测试代码1错误屏幕截图:

测试代码2:

测试代码2错误提示:

我的Python版本是Anaconda 3.6.8

要设置的参数必须是一个iterable,其元素是所需的集合项。集合0,0有一个iterable作为参数,但其元素是0和0,而不是元组0,0。您需要设置[0,0]。德克也是如此;您需要一个包含元组0,0[0,0]的iterable,因此

至于您看到的错误,函数没有一个_umro _;,因为它不需要一个。它的基类始终是object,您不能从函数继承来创建一个类,该类的MRO需要访问函数的假设MRO

至于为什么您的数据类会引发该错误,这是因为数据类装饰器必须装饰一个类,而不是一个函数

from dataclasses import dataclass

@dataclass
class DequeItems:
    current:tuple
    path:list

a = DequeItems(
        current=(0, 0),
        path=[(0, 0)]
    )
print(a)

根据,此模块提供了一个装饰器和函数,用于自动将生成的特殊方法添加到用户定义的类中。以def开头的东西是一个类吗?据我所知,这个decorator将为您@ForceBruYes处理许多方法,比如uuu init uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。函数通常有这些方法吗?函数拥有它们有意义吗?写set0,0以获得tuples@ForceBru当然,通常你不需要这些复杂的东西。但就我而言,我需要一个类来存储东西。
from dataclasses import dataclass

@dataclass(init=True)
def Pair():
    visit:tuple

a=Pair( visit=(0,0)) 
print(a)   
collections.deque([((0, 0), [ (0, 0) ] )])
from dataclasses import dataclass

@dataclass
class DequeItems:
    current:tuple
    path:list

a = DequeItems(
        current=(0, 0),
        path=[(0, 0)]
    )
print(a)