2011-01-04 9 views
6

Python built-inのメソッドは、どこかのパッケージで参照できるのですか?Pythonの組み込みメソッドはどこでも別の名前空間で利用できますか?

私を説明しましょう。 pythonの私(IER)初期の頃は、私は、これに似たジャンゴモデルを作った:

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プロパティの移動の回避策については既に知っています。私はPythonの組み込み関数を参照するための別の場所の主な問題ですので、この特定のケースについてはあまり心配していません。

+0

を多分私は理解していないが、あなたは自分の 'MyModel'クラス'他property'何かの名前を変更することはできません、 '_property'またはwhat-のようなありがとう? – martineau

+0

それは問題ではありませんでした。 –

+0

いいえ、それは私のことを無関係にしません。 – martineau

答えて

14

__builtin__を使用してください。

def open(): 
    pass 

import __builtin__ 

print open 
print __builtin__.open 

これがあなたに与えます:

<function open at 0x011E8670> 
<built-in function open> 
+2

これらすべてのアンダースコアを入力すると、 'built __builtin__ as builtin'などを実行することもできます。 – kindall

+0

どのような人生の節約:-) – Yeo

関連する問題