首页 > 解决方案 > AttributeError:“FiniteSet”对象没有属性“差异”

问题描述

使用“finiteSet”方法创建两个集合后,使用“difference”方法时出现“AttributeError”错误。

虽然我可以对使用“finiteSet”创建的集合进行“打印(ab)”,但不能使用“打印(a.difference(b))”。或者当我直接创建集合时,我可以使用“差异”方法。

我不明白为什么。如果您能提供帮助,我将非常高兴。

from sympy import FiniteSet
from fractions import Fraction

k = {2,3,4,5}
m = {3,2,1,7,5}
print(k-m)
print(k.difference(m))

s = FiniteSet(1, 1.5, Fraction(1, 5), 1, 1.5, 7, 42)
t = FiniteSet(Fraction(1, 5), 1, 5, 1, 1, 91, 87)
print(s-t)
print(s.difference(t)) # I'm getting an error here.

标签: python

解决方案


来自文档:https://docs.sympy.org/latest/modules/sets.html#set

任何类型集合的基类。

这并不意味着直接用作物品的容器。它的行为不像内置的 set;请参阅 FiniteSet。

并且FiniteSet不是 built-in 的后代set
所以你不能指望FiniteSet.difference方法甚至setdifference方法。
文档中没有difference方法。


推荐阅读