如何在Python中选择对象

时间:2015-11-05 12:51:20

标签: python object

我知道最好不要给不同的对象指定相同的名称,但为了好奇,是否可以从多个同名对象中选择一个特定的对象?

CREATE TRIGGER biblioitems_after_marcxml_update 
    AFTER UPDATE ON biblioitems
    FOR EACH ROW BEGIN
            INSERT IGNORE INTO X_BIBLIONUMBER_BIBID VALUES (NEW.biblionumber, EXTRACTVALUE(NEW.marcxml,  '//controlfield[@tag="001"]' ));
    END

等等。如您所见,对象的类型取决于您定义它们的顺序。是否有解释?

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

P.S。我知道这个问题听起来很愚蠢。

3 个答案:

答案 0 :(得分:2)

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}

答案 1 :(得分:1)

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

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

myObj=2

将使myObj指向整数对象。

class myObj:
  pass

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

了解更多信息。参考python docs。

答案 2 :(得分:1)

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