Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何比较Python中的两个实例?_Python_Python 3.x_Instance_Instance Variables - Fatal编程技术网

如何比较Python中的两个实例?

如何比较Python中的两个实例?,python,python-3.x,instance,instance-variables,Python,Python 3.x,Instance,Instance Variables,是否有可能比较两个“实例”?我有一个变量和一个列表。变量的类型为“实例”,列表中的项也具有相同的类型。当我将变量与列表中的同一项进行比较时: cities = [USA, Poland, England, GB, Italy] variable = Italy variable == cities[-1] 我收到“False”作为输出。我100%确信这两个元素是相同的 提前谢谢 Python中有两种类型的对象。可变的,不变的 不变的 无法更改状态 通常被认为是“原始”类型 int,floa

是否有可能比较两个“实例”?我有一个变量和一个列表。变量的类型为“实例”,列表中的项也具有相同的类型。当我将变量与列表中的同一项进行比较时:

cities = [USA, Poland, England, GB, Italy]
variable = Italy

variable == cities[-1]
我收到“False”作为输出。我100%确信这两个元素是相同的


提前谢谢

Python中有两种类型的对象。可变的,不变的

不变的
  • 无法更改状态
  • 通常被认为是“原始”类型
  • int
    float
    string
    tuple
易变的
  • 状态可以更新和更改
  • 列表
    dict
    集合
    字节数组
    ,通过
    标记创建的任何对象

根据您在说
变量时讨论的类型,这将影响操作员
=
。始终根据实际值检查不可变类型(例如,
1==1
is
True
),其中根据对象的方法检查可变类型(这会重载
=
符号)

列出的所有可变类型(使用
类初始化的新对象除外)都有一个内置的
\uuuu eq\uuu
方法,当出现
=
符号时使用该方法。假设您正在使用自己的对象,请以以下对象为例:

Obj类:
def uuu init uuu(self,integer):
self.integer=整数
打印(Obj(1)=Obj(1))#错误
请注意,尽管
integer
对于每个
Obj
都是相等的,但由于
Obj
是一个可变类型,没有
\uuuuuueq\uuuuu
方法,Python将根据对象在内存中的空间来检查对象是否相等,换句话说,就是
True
,对象必须与您初始化的对象完全相同

Obj类:
def uuu init uuu(self,integer):
self.integer=整数
obj=obj(1)
打印(obj==obj)#正确
要手动重载
==
符号,必须使用
方法:

Obj类:
def uuu init uuu(self,integer):
self.integer=整数
定义(自身、其他):
#两个整数的比较。
返回self.integer==other.integer
打印(Obj(1)=Obj(1))#真

此处需要更多详细信息,变量是什么?
列表的上下文是什么?您可能需要这样做。
list
是一个已保存的名称空间,不要将其用于变量名。尝试执行“isinstance(variable,list)”并查看它是否返回True。@BobbyTrap只是一个示例,我知道:)如何为字符串实现它?字符串已经有一个内置的
\uuueq\uu
方法。如果您在进行比较时收到
False
,则表示它们不同<代码>“hello world”==“helloworld”
将返回
False
。我之所以这样问,是因为我的问题与字符串有关。有什么解决方案吗?您必须以假定彼此相等的字符串实际上相等的方式格式化字符串(例如,将
a
转换为
a
,默认为小写或大写等)。事实是,如果Python告诉您两个字符串不相等,这意味着字符串是不相等的(
“hello”==“hello”
产生
False
“héllo”==“hello”
产生
False
)是的,但我的字符串是相同的,我确信这一点。问题的主要原因是“实例”类型,但正如您前面提到的,字符串已经有了eq,所以现在,Ikd如何解决它。