一尘不染

python内置方法在任何地方的替代名称空间中都可用吗?

python

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

让我解释。在python的早期,我制作了一个类似于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")

从那以后,我需要为其添加一个属性。这让我有了这个模型:

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)

因此,现在在运行时出现错误:TypeError: 'ForeignKey' object is not callable。发生这种情况的原因是,ForeignKey属性已替换了内置标识符属性。我想做的是代替@property使用@sys.property(或类似方法)。

注意:
我已经知道将name属性移到property字段的声明上方的解决方法。我不太担心这种特殊情况,因为我是引用python内置文件的替代位置的主要问题。


阅读 188

收藏
2021-01-20

共1个答案

一尘不染

使用builtins,或者使用__builtin__Python
2。

def open():
    pass

import __builtin__

print open
print __builtin__.open

这给您:

<function open at 0x011E8670>
<built-in function open>
2021-01-20