Python类有方法“set”,如何引用内置的set类型?

Python类有方法“set”,如何引用内置的set类型?,python,Python,如果您在一个类中有一个名为set的方法,并且希望在该类的其他地方创建一个标准内置set对象,那么当我这样做时,Python似乎会引用该方法。如何更具体地让Python知道您指的是内置集,而不是方法集?更具体地说,集合是在一个________;函数中创建的。通常方法名会从全局名中消除歧义,因为您必须在self前面加前缀 因此self.set调用类方法,set调用全局集 如果这样做没有帮助,也许可以发布您遇到问题的代码。通常方法名称会从全局名称中消除歧义,因为您必须在self前面加前缀 因此self

如果您在一个类中有一个名为set的方法,并且希望在该类的其他地方创建一个标准内置set对象,那么当我这样做时,Python似乎会引用该方法。如何更具体地让Python知道您指的是内置集,而不是方法集?更具体地说,集合是在一个________;函数中创建的。

通常方法名会从全局名中消除歧义,因为您必须在self前面加前缀

因此self.set调用类方法,set调用全局集


如果这样做没有帮助,也许可以发布您遇到问题的代码。

通常方法名称会从全局名称中消除歧义,因为您必须在self前面加前缀

因此self.set调用类方法,set调用全局集


如果这没有帮助,也许可以发布您遇到问题的代码。

对象属性始终通过引用访问,因此对象属性无法隐藏内置项。

对象属性始终通过引用访问,因此,对象属性无法对内置项进行阴影处理。

您可以将内置项集称为uu内置项集。

您可以将内置项集称为u内置项集。

如果运行下面的代码,您会注意到UseSet类的set方法不会隐藏内置项集类型

class UsesSet(object):
    def set(self):
        pass
    def other(self):
        my_set = set([1, 2])
        print type(my_set), my_set

obj = UsesSet()
obj.other()
上面的代码输出set[1,2],表明我们类的set方法没有隐藏内置的set

但是,如果您有一个模块,其中定义了一个名为set的函数,则会发生以下情况:

def set(arg):
    print "This is my own set function"

class UsesSet(object):
    def other(self):
        my_set = set([1, 2])
        print type(my_set), my_set

obj = UsesSet()
obj.other()
上述代码输出:

This is my own set function
<type 'NoneType'> None

因此,正如您所看到的,与内置函数同名的模块级函数隐藏了内置函数。

如果运行下面的代码,您将注意到UseSet类的set方法不会隐藏内置的set类型

class UsesSet(object):
    def set(self):
        pass
    def other(self):
        my_set = set([1, 2])
        print type(my_set), my_set

obj = UsesSet()
obj.other()
上面的代码输出set[1,2],表明我们类的set方法没有隐藏内置的set

但是,如果您有一个模块,其中定义了一个名为set的函数,则会发生以下情况:

def set(arg):
    print "This is my own set function"

class UsesSet(object):
    def other(self):
        my_set = set([1, 2])
        print type(my_set), my_set

obj = UsesSet()
obj.other()
上述代码输出:

This is my own set function
<type 'NoneType'> None

因此,正如您所看到的,与内置函数同名的模块级函数隐藏了内置函数。

我想我知道这里发生了什么。你在做这样的事吗

>>> class A(object):
...     def set(self):
...             pass
...     def test(self, x=set):
...             return x
... 
>>> set
<type 'set'>
>>> A().test()
<function set at 0x64270>

您可以将集合放在类定义的底部,也可以使用uu builtins uu.set引用内置集合。

我想我知道这里发生了什么。你在做这样的事吗

>>> class A(object):
...     def set(self):
...             pass
...     def test(self, x=set):
...             return x
... 
>>> set
<type 'set'>
>>> A().test()
<function set at 0x64270>

您可以将集合放在类定义的底部,也可以使用uuu builtins\uuuuu.set引用内置集合。

您所问的没有意义,方法不能对内置项进行阴影处理,除非您不放置代码:类范围,那么您看到了什么问题?发生了什么?+1这里有一些代表,但通过单击答案旁边的复选框来感谢帮助您的人被认为是礼貌的。一些示例代码会很有帮助。您所问的没有意义,一个方法不能隐藏内置项,除非您不放置代码:类范围,那么您看到了什么问题?发生了什么?+1这里有一些代表,但是通过单击对您帮助最大的答案旁边的复选框来感谢帮助您的人被认为是礼貌的。一些示例代码可能会有所帮助。另一个选项是def testself,x=None:,如果x为None:x=set。另一个选项是def testself,x=None:,如果x为None:x=set。