Один liner, но без String.format:
Color your_color = Color.BLACK;
String hex = "#"+Integer.toHexString(your_color.getRGB()).substring(2);
Вы можете добавить .toUpperCase()
, если хотите перейти на заглавные буквы.
__radd__
вызывается только в том случае, если у левого объекта нет метода __add__
, или этот метод не знает, как добавить два объекта (которые он помещает, возвращая NotImplemented). Оба класса имеют метод __add__
, который не возвращает NotImplemented. Поэтому метод __radd__
никогда не будет вызван.
Эти функции
blockquote>__radd__
вызывается только в том случае, если левый операнд не поддерживает соответствующую операцию, а операнды имеют разные типы. Например,class X: def __init__(self, num): self.num = num
class Y: def __init__(self, num): self.num = num def __radd__(self, other_obj): return Y(self.num+other_obj.num) def __str__(self): return str(self.num)
>>> x = X(2) >>> y = Y(3) >>> print(x+y) 5 >>> >>> print(y+x) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-60-9d7469decd6e> in <module>() ----> 1 print(y+x) TypeError: unsupported operand type(s) for +: 'Y' and 'X'