Đối với một số lý do, phương pháp super()
không phải luôn luôn hành xử như mong đợi, chọn quay trở lại:Python siêu() hành vi không đáng tin cậy
TypeError('super(type, obj): obj must be an instance or subtype of type)'
tôi hiểu những gì lỗi nghĩa. Tôi không hiểu tại sao nó lại xuất hiện như một lỗi. Đây là đoạn mã đang phá vỡ. Tất cả các đối tượng trong hệ thống là các đối tượng kiểu mới.
Điều thực sự thú vị là lỗi này không luôn hiển thị. Tôi không biết điều gì gây ra nó. Phương pháp super()
trong Retrieval
đang chuyển qua lớp Retrieval
và sau đó là đối tượng, theo như tôi biết, chính xác cách super()
là được yêu cầu để được gọi.
Bạn nghĩ gì?
Trong file DBConnection.py:
class DBAdminConnection(object):
def __init__(self):
self.user = DBUserConnection().user
self.submissions = DBSubmissionConnection()
Trong file Retrieval.py
class Retrieval(DBConnection.DBAdminConnection):
def __init__(self, username=None, password=None, unique_key=None):
super(Retrieval,self).__init__()
if username and password:
self.username = username
self.user.login(username,password, config.DATABASE)
if self.user.error:
raise UserLoginError(username)
self.unique_key = unique_key
Điều này đang chạy qua webpy. Cho nên đó là khả năng nhất định. Đặc biệt là kể từ khi tôi giết các ứng dụng dụ và respawn nó, vấn đề biến mất. Wow. Bây giờ câu hỏi trở nên như thế nào để sửa chữa nó. –
@TomThorogood: bạn đang chạy ứng dụng của mình như thế nào? Bạn đang sử dụng mod_wsgi? –
@TomThorogood: đã thêm điều gì đó trong trường hợp bạn đang sử dụng wsgi. –