(окончательный) EDIT: Хорошо, поэтому я полный тупик. Моя идентификация была сделана так, что все мои методы после __init__
были фактически внутри моего __init__
. Это синтаксическая ошибка.Инициализировать атрибут класса с помощью метода
Я хотел бы знать, могу ли я инициализировать переменную с помощью метода (члена класса). В основном, это выглядит следующим образом:
class Tile:
def __init__(self, x, y, tile_type):
self._x = x
self._y = y
self._tile_type = tile_type
self._color = my_method()
(further in class)
def my_method(self):
#my definition
В настоящее время он дает мне ошибку:
UnboundLocalError: local variable 'my_method' referenced before assignment
Проблема заключается в том, что я объявляю 2d массив со списком понимания, как этот
[[Tile(i,j,0) for i in range(Y_SIZE)] for j in range(X_SIZE)]
Поэтому я хотел бы избежать второго вложенного цикла, чтобы поместить возвращаемое значение my_method()
в атрибут класса _color
, если это возможно.
Спасибо!
EDIT: как я уже сказал, я буду более конкретным: я хочу присвоить значение, возвращаемое my_method()
, _color
. И извините за отступ, my_method(self)
фактически находится в классе Tile
.
Для тех, кто на самом деле хотите полный код класса:
class Tile:
def __init__(self, x, y, tile_type):
self._x = x
self._y = y
self._tile_type = tile_type
self._color = self.set_color_variation()
def _get_x(self):
return self._x
def _set_x(self, x):
self._x = x
x = property(_get_x, _set_x)
def _get_y(self):
return self._y
def _set_y(self, y):
self._y = y
y = property(_get_y, _set_y)
def _get_color(self):
return self._color
def _set_color(self, color):
self._color = color
color = property(_get_color, _set_color)
def _get_tile_type(self):
return self._tile_type
def _set_tile_type(self,tile_type):
self._tile_type = tile_type
tile_type = property(_get_tile_type, _set_tile_type)
def set_color_variation(self):
_color = make_color(TILE_COLOR[_tile_type], TILE_COLOR_VARIATION[_tile_type])
и сообщение об ошибке в настоящее время он дает мне:
AttributeError: 'Tile' object has no attribute 'set_color_variation'
Если я пишу
self._color = set_color_variation()
It дает мне:
UnboundLocalError: local variable 'set_color_variation' referenced before assignment
В настоящее время написано, 'my_method' это на самом деле не в' Tile', хотя вы не получить к нему доступ через 'self' так или иначе; пожалуйста, дайте [mcve] полную ошибку, чтобы прояснить проблему. – jonrsharpe
Вы хотите, чтобы 'self._color' был результатом вызова' my_method() ', или вы хотите, чтобы он содержал ссылку на этот метод? –
Вы можете передать my_method в качестве аргумента в вашем конструкторе, как этот 'def __init __ (self, x, y, tile_type, my method)' –