Python类有"set"方法,如何引用内置set类型?

2 投票
5 回答
610 浏览
提问于 2025-04-15 18:51

如果你在一个类里有一个叫“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。

撰写回答