2011-01-04 11 views
6

Python built-in yöntemleri bir yerde bir pakete referans olarak kullanılabilir mi?Python yerleşik yöntemleri alternatif bir ad alanında her yerde bulunabilir mi?

Açıklamama izin verin. O zamandan beri ihtiyaç var

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") 

buna bir özellik eklemek için: pitonun benim erken (ier) günlerde ben buna benzer bir Django modelini yaptı. Bu, bu model ile beni bırakır:

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) 

Yani şimdi zamanında ben hatayı alıyorum: TypeError: 'ForeignKey' object is not callable. Bu gerçekleşiyor çünkü mülk için ForeignKey yerleşik tanımlayıcı özelliğini değiştirdi. Yapmak istediğim şey, @property yerine @sys.property (veya benzer bir şey) kullanmaktır.

Not: Zaten özellik alan ilanına yukarıda adı özelliği hareketli geçici çözüm biliyorum. Bu özel durum hakkında o kadar endişe duymuyorum ki, python yerleşiklerine referans vermek için alternatif konumların ana soruyum.

+0

anlamıyorum, ama sadece _property' veya ne- 'gibi' MyModel' sınıfını 'başka property' şey, yeniden adlandırma olamaz senin varmi? – martineau

+0

Bu soru değildi. –

+0

Hayır, ama bu benimkini alakasız hale getirmiyor. – martineau

cevap

14

kullanın __builtin__.

def open(): 
    pass 

import __builtin__ 

print open 
print __builtin__.open 

Bu verir:

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

Tüm bu alt çizgi işaretleri size yazılırsa, __builtin__ öğesini builtin 'veya benzerleri olarak da içe aktarabilirsiniz. – kindall

+0

Ne bir hayat kurtarıcı :-) – Yeo

İlgili konular