python内置方法是否可以在任何名称空间中使用?

Jas*_*ebb 6 python built-in

python 内置方法是否可以在某个包中引用?

让我解释.在python的早期(ier)时代,我制作了一个类似于此的django模型:

class MyModel(models.Model):
    first_name = models.CharField(max_length=100, null=True, blank=True)
    last_name = models.CharField(max_length=100, null=True, blank=True)
    property = models.ForeignKey("Property")
Run Code Online (Sandbox Code Playgroud)

我已经需要为它添加一个属性.这让我有这个模型:

class MyModel(models.Model):
    first_name = models.CharField(max_length=100, null=True, blank=True)
    last_name = models.CharField(max_length=100, null=True, blank=True)
    property = models.ForeignKey("Property")

    @property
    def name(self):
        return "{} {}".format(first_name, last_name)
Run Code Online (Sandbox Code Playgroud)

所以现在在运行时我得到错误:TypeError: 'ForeignKey' object is not callable.发生这种情况是因为ForeignKey属性已替换内置标识符属性.我希望能够做的是,而不是@property使用@sys.property(或类似的东西).

注意:我已经知道将name属性移动到属性字段声明之上的解决方法.我不是那么关心这个特殊情况,因为我是引用python内置函数的替代位置的主要问题.

Chr*_* B. 15

使用builtins,或者__builtin__如果您使用的是Python 2.

def open():
    pass

import __builtin__

print open
print __builtin__.open
Run Code Online (Sandbox Code Playgroud)

这给你:

<function open at 0x011E8670>
<built-in function open>
Run Code Online (Sandbox Code Playgroud)

  • 如果键入所有这些下划线,你也可以执行`import __builtin__ as builtin`等. (3认同)