Я пытаюсь определить некоторые методы класса с использованием другого метода более общего класса следующим образом:functools.partial по методу класса
class RGB(object):
def __init__(self, red, blue, green):
super(RGB, self).__init__()
self._red = red
self._blue = blue
self._green = green
def _color(self, type):
return getattr(self, type)
red = functools.partial(_color, type='_red')
blue = functools.partial(_color, type='_blue')
green = functools.partial(_color, type='_green')
Но когда я пытаюсь вызвать любого из этих методов я получаю:
rgb = RGB(100, 192, 240)
print rgb.red()
TypeError: _color() takes exactly 2 arguments (1 given)
Я думаю, что сам не перешел на _color
с rgb.red(rgb)
работает.
Получил. Благодарю. – Arjor
Что относительно 'self.red = functools.partial (RGB._color, self, 'red')' in '__init__'? Совместимость с Python2 тоже. – dashesy
@ dashesy: конечно, но это помещает эти объекты в каждый экземпляр (стоимость памяти), что также затрудняет замену подкласса. –