如何在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现在指向另一个对象,并且没有其他引用变量,这些引用变量持有对该变量的引用。我们谈论的是变量本身,而不是值。变量没有被删除,它被重新分配,旧的值将被垃圾收集,但这是另一回事