Python类有"set"方法,如何引用内置set类型?
如果你在一个类里有一个叫“set”的方法,而你又想在这个类的其他地方创建一个标准的内置“set”对象,Python 似乎会把你指向那个方法。你该怎么做才能让 Python 明白你是想用内置的“set”,而不是那个方法呢?更具体一点,set() 是在一个 _____exit_____ 函数里被创建的。
5 个回答
2
你可以把内置的 set
看作是 __builtins__.set
。
3
对象的属性总是通过引用来访问的,所以对象的属性不可能会遮盖掉内置的属性。
11
我觉得我明白这里发生了什么。你是不是在做类似这样的事情呢?
>>> class A(object):
... def set(self):
... pass
... def test(self, x=set):
... return x
...
>>> set
<type 'set'>
>>> A().test()
<function set at 0x64270>
这是一个比较微妙的问题,主要是因为类里面的方法定义方式。正是这种方式让你可以很轻松地创建方法别名,比如说:
class A(object):
def some_method(self):
pass
some_other_method = some_method
你可以把set
放在类定义的底部,或者你也可以通过__builtins__.set
来引用内置的set。