Я пишу класс в Python 2.6.2, который содержит таблицу поиска. Большинство случаев достаточно просты, чтобы таблица содержала данные. Некоторые случаи более сложны, и я хочу иметь возможность вызывать функцию. Однако я сталкиваюсь с некоторыми проблемами при обращении к этой функции.
Вот пример кода:
class a:
lut = [1,
3,
17,
[12,34],
5]
Где lut
является статическим, и ожидается, что оно также будет постоянным.
и теперь я хочу сделать следующее:
class a:
def spam0(self):
return (some_calculation_based_on_self)
def spam1(self):
return (a_different_calculation_based_on_self)
lut = [1,
3,
17,
[12,34],
5,
self.spam0
self.spam1]
Не компилируется, потому что self.spam0
и self.spam1
не определены. Я попытался использовать a.spam
, но это также не определено. Как установить lut[5]
для возврата ссылки на self.spam
?
Редактировать: Это то, что я планирую сделать:
(продолжение определения class a
):
импортная проверка
# continue to somewhere in the definition of class a
def __init__(self, param):
self.param = param
def eggs(self):
tmp = lut[param]
if (insect.isfunction(tmp)): # if tmp is self.spam()
return tmp() # should call it here
return tmp
Поэтому я хочу либо вернуть простое значение, либо запустить дополнительный код, в зависимости от параметра.
Редактировать: lut
не обязательно должно быть свойством класса, но методы spam0
и spam1
должны иметь доступ к членам класса, поэтому они должны принадлежать классу .
Я не уверен, что это лучший способ сделать это. Я все еще работаю над этим.