2011-01-04 23 views
6

Có phải python built-in phương pháp có sẵn để tham chiếu trong gói hàng ở đâu đó không?Các phương thức được xây dựng sẵn của python có sẵn trong một không gian tên thay thế ở bất kỳ đâu không?

Hãy để tôi giải thích. Trong những ngày đầu của tôi (ier) của python tôi đã tạo ra một mô hình django tương tự như sau:

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

Tôi có từ khi cần thêm thuộc tính vào nó. Điều này khiến tôi có mô hình này:

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) 

Vì vậy, bây giờ khi chạy, tôi gặp lỗi: TypeError: 'ForeignKey' object is not callable. Điều này xảy ra vì ForeignKey cho thuộc tính đã thay thế thuộc tính định danh được tích hợp sẵn. Những gì tôi muốn có thể làm là thay vì @property sử dụng @sys.property (hoặc một cái gì đó tương tự).

Lưu ý: Tôi đã biết về cách giải quyết di chuyển thuộc tính tên phía trên tuyên bố của trường thuộc tính. Tôi không quá lo lắng về trường hợp cụ thể này vì tôi là câu hỏi chính về các vị trí thay thế để tham chiếu đến các trình xây dựng python.

+0

Có lẽ tôi không hiểu, nhưng có thể bạn không chỉ cần đổi tên 'bạn lớp MyModel' 'property' cái gì khác, như' _property' hoặc what- có bạn? – martineau

+0

Đó không phải là câu hỏi. –

+0

Không, nhưng điều đó không làm cho tôi không liên quan. – martineau

Trả lời

14

Sử dụng __builtin__.

def open(): 
    pass 

import __builtin__ 

print open 
print __builtin__.open 

này mang đến cho bạn:

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

Nếu nhập tất cả các dấu gạch dưới đó vào bạn, bạn cũng có thể thực hiện 'nhập __builtin__ như được tạo sẵn hoặc tương tự. – kindall

+0

những gì một cuộc sống tiết kiệm :-) – Yeo

Các vấn đề liên quan