Можете ли вы создать переменную класса, которая вызывает экземпляр класса?Python

Программы на Python
Ответить
Anonymous
 Можете ли вы создать переменную класса, которая вызывает экземпляр класса?

Сообщение Anonymous »

Я работаю с классом, который выполняет некоторые математические операции и сохраняет результат, а затем со строкой, которая устанавливает «noresult» для этого класса, но инициируется нулями, вот так (я опускаю математические вычисления, это должно быть все соответствующие биты):

Код: Выделить всё

class Result(object):
def __init__(self, slope, offset):
self._slope = slope
self._offset = offset

@classmethod
def dothemath(cls, etc):
...

Result.NORESULT = Result((0, 0), (0, 0))
Кроме того, есть много мест, где он устанавливает атрибут объекта "result" для экземпляра этого класса, а затем говорит что-то вроде "если object.result не является Result.NORESULT"
p>
Это работает нормально, но PyCharm выделяет это везде, где он используется, импортируя класс, жалуясь, что у класса нет атрибута NORESULT. Есть ли способ получить точную функциональность в определении самого класса (т. е. вызвать класс без необходимости его инициализации?)
Я было две идеи, но ни одна не сработала:

Код: Выделить всё

class Result(object):
NORESULT = cls((0,0), (0,0))

def __init__:
...

class Result(object):
def __init__(self, slope, offset):
self.NORESULT = cls((0, 0), (0, 0))
...
оба выдают мне «Неразрешенная ссылка cls», так что я думаю, это не работает - и в любом случае второй потребует от меня инициализировать класс, чтобы вместо этого получить NORESULT. Я определенно видел использование cls() раньше в этом коде, поэтому не уверен, почему в некоторых местах он работает, а в других нет. Действительно ли такая рекурсивность может быть реализована в классе?
Я знаю, что Python 2.7 больше не поддерживается, хотя он не является частью фрагмента кода, этот конкретный вопрос о, я работаю с Gwyddion, которая не планирует обновлять свой пакет интеграции Python, gwy, с 2.7 до 3.x.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -the-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»