Python имеет возможности.Переменные известны только внутри областей.Вы можете определить глобальные переменные, чтобы заставить их быть доступными в глобальной области видимости, но это загромождает их, и это плохая практика.
Подробнее об этом см. Краткое описание правил определения объема? .
Вы можете сделать свой глобальный:
def initColors():
# declare them global
global BLACK,RED,BLUE,LIGHTGRAY,DARKGRAY,WHITE
BLACK = (0,0,0)
RED = (255,0,0)
BLUE = (0,0,255)
LIGHTGRAY = (128,128,128)
DARKGRAY = (64,64,64)
WHITE = (255,255,255)
initColors()
def initOtherVars():
# need to be global as well, else invalid outside this scope
global nhover,hover,mselected,selected
nhover = WHITE
hover = RED
mselected = BLACK
selected = RED
initOtherVars()
Таким образом, сначала вы должны поместить цвета в глобальное пространство, а затем и другие переменные.
Вы можете создать класс, который будет содержать ваши цвета в качестве переменных класса, что делает его доступным через Classname.Varname
:
class MyColors:
BLACK = (0,0,0)
RED = (255,0,0)
BLUE = (0,0,255)
LIGHTGRAY = (128,128,128)
DARKGRAY = (64,64,64)
WHITE = (255,255,255)
def initOtherVarsByClass():
# these need still to be made global
global Cnhover,Chover,Cmselected,Cselected
Cnhover = MyColors.WHITE
Chover = MyColors.RED
Cmselected = MyColors.BLACK
Cselected = MyColors.RED
initOtherVarsByClass()
Но вам все равно нужно сделать другие переменные global
, чтобы иметь доступ кте, которые вы определили в вашей функции.Я думаю, что было бы легче сделать класс «держателем» и создать в нем свой mselected
и т. Д. Для доступа к нему через класс.
class LinkColors():
nhover = MyColors.WHITE
hover = MyColors.RED
mselected = MyColors.BLACK
selected = MyColors.RED
Вы также можете создавать функции, которые просто возвращают вашцвет:
def GetSelected():
return MyColors.RED
Вместо того, чтобы загромождать глобальное пространство, вы получаете больше классов.