Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.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_Object - Fatal编程技术网

如何在Python中选择对象

如何在Python中选择对象,python,object,Python,Object,我知道不给不同的对象取相同的名称是一种很好的做法,但出于好奇,是否可以从多个同名对象中选择一个特定的对象 >>> exampleobject=0 >>> def exampleobject(): ... print('This is a function.') >>> class exampleobject: ... def exampleobject(): ... print('Hello World!')

我知道不给不同的对象取相同的名称是一种很好的做法,但出于好奇,是否可以从多个同名对象中选择一个特定的对象

>>> exampleobject=0
>>> def exampleobject():
...     print('This is a function.')
>>> class exampleobject:
...     def exampleobject():
...         print('Hello World!')
>>> type(exampleobject)
    <class 'type'>
>>示例对象=0
>>>def exampleobject():
...     print('这是一个函数')
>>>类示例对象:
...     def exampleobject():
...         打印(“你好,世界!”)
>>>类型(例如对象)
等等。如您所见,对象的类型取决于您定义它们的顺序。对此有何解释

此外,一旦定义了一个函数来代替同名变量,该变量是否会被删除


另外,我知道这个问题听起来很愚蠢。

在您给出的示例中,object不是实际的object,只是对object的引用。在python中,一切都是对象

为了更清楚,我将使用myObj。 所以

将使myObj指向整数对象

class myObj:
  pass
将创建一个新类型对象,并将其引用指定给引用变量myObj。因此,将不同对象的句柄重新分配给同一个引用变量,以确定引用变量的类型。换句话说,type(myObj)将为您提供myObj指向的对象的类型


更多信息。请参阅python文档。

在示例中,您给定的对象不是实际对象,而是对对象的引用。在python中,一切都是对象

为了更清楚,我将使用myObj。 所以

将使myObj指向整数对象

class myObj:
  pass
将创建一个新类型对象,并将其引用指定给引用变量myObj。因此,将不同对象的句柄重新分配给同一个引用变量,以确定引用变量的类型。换句话说,type(myObj)将为您提供myObj指向的对象的类型


更多信息。请参阅python文档。

您可以查看输出
globals()
。您在当前文件中定义的值将存储在其中。因此,如果定义两个同名对象,第一个对象将被第二个对象覆盖。您还可以尝试
globals['A']=1
,这等于
A=1

您可以查看输出
globals()
。您在当前文件中定义的值将存储在其中。因此,如果定义两个同名对象,第一个对象将被第二个对象覆盖。您还可以尝试
globals['A']=1
,它等于
A=1

Python是动态语言,因此您可以为同一变量分配不同类型(int、string、function)的值:

>>> o=1
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'o': 1, '__package__': None}
>>> type(o)
<type 'int'>
>>> def o():
...     print 1
... 
>>> type(o)
<type 'function'>
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'o': <function o at 0x7fba38e21578>, '__package__': None}
>o=1
>>>globals()
{uuuu内置名称:,'uuuu名称:''uuuu主文件','uuuu文档:'uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
>>>类型(o)
>>>def o():
...     打印1
... 
>>>类型(o)
>>>globals()
{uuuu内置名称:,'uuuuu名称:''uuuuu主要名称:''uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

Python是一种动态语言,因此您可以为同一变量分配不同类型的值(int、string、function):

>>> o=1
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'o': 1, '__package__': None}
>>> type(o)
<type 'int'>
>>> def o():
...     print 1
... 
>>> type(o)
<type 'function'>
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'o': <function o at 0x7fba38e21578>, '__package__': None}
>o=1
>>>globals()
{uuuu内置名称:,'uuuu名称:''uuuu主文件','uuuu文档:'uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
>>>类型(o)
>>>def o():
...     打印1
... 
>>>类型(o)
>>>globals()
{uuuu内置名称:,'uuuuu名称:''uuuuu主要名称:''uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


垃圾收集器将收集以前的数据,因为没有对该数据的其他引用。请不要将变量命名为与内置变量相同的名称。(
对象
是内置的)为什么它不取决于您定义它们的顺序?如果你叫某个东西“foo”,然后又叫另一个东西“foo”,你为什么不希望“foo”指的是你最后一个用这个名字的东西?@Daniel是的,但是第一个被删除了还是什么?@JAW,正如有人在回答中提到的,您只有一个变量,并且每次都为同一个变量指定不同的值,因此该变量不是第一个或最后一个。至于数据,是的,它是由垃圾收集器收集的。垃圾收集器将收集以前的数据,因为没有其他对该数据的引用。请不要将变量命名为与内置变量相同的名称。(
对象
是内置的)为什么它不取决于您定义它们的顺序?如果你叫某个东西“foo”,然后又叫另一个东西“foo”,你为什么不希望“foo”指的是你最后一个用这个名字的东西?@Daniel是的,但是第一个被删除了还是什么?@JAW,正如有人在回答中提到的,您只有一个变量,并且每次都为同一个变量指定不同的值,因此该变量不是第一个或最后一个。至于数据,是的,它是由垃圾收集器收集的。我明白了。但是,第一个变量
o
被删除了吗?它没有被删除,它被赋予了不同的值,函数而不是实际的参考变量,因此,它不会被删除,实际上它指向的对象可能会被删除(垃圾/收集),假设o现在指向另一个对象,并且没有其他引用变量,这些引用变量持有对该变量的引用。我们谈论的是变量本身,而不是值。变量没有被删除,它被重新分配,旧的值将被垃圾收集,但这是另一回事。我真的不明白这个问题与动态键入有什么关系。我明白了。但是,第一个变量
o
被删除了吗?它没有被删除,它被赋予了不同的值,函数而不是实际的参考变量,因此,它不会被删除,实际上它指向的对象可能会被删除(垃圾/收集),假设o现在指向另一个对象,并且没有其他引用变量,这些引用变量持有对该变量的引用。我们谈论的是变量本身,而不是值。变量没有被删除,它被重新分配,旧的值将被垃圾收集,但这是另一回事