Я пишу скрипт в Maya и пытаюсь назначить переменную внутри другого метода, а не внутри __init__
, как мы обычно делаем (я помещаю свои оконные команды в __init__
, поэтому, когда инициализируется новый экземпляр, если мы присваиваем переменные внутри __init__
, он будет работать до конца, не назначая переменным значение, которое я хочу). Например:
def __init__(self, windowID = 'selectsomething', title = 'select something'):
self.windowID = windowID
self.title = title
if cmds.window(self.windowID, exists = True):
cmds.deleteUI(self.windowID)
myWindow = cmds.window(self.windowID, title = self.title)
cmds.rowColumnLayout(numberOfColumns = 2, columnWidth = [(1, 300), (2, 100)],
columnAttach = [1, 'left', 10], columnSpacing = [1, 10],
rowSpacing = [1, 5])
cmds.button(label = "Apply", command = self.applyButton) #it should print out selected object
cmds.button(label = "Cancel", command = self.cancelButton)
cmds.showWindow(myWindow)
#now for example if I have a sel variable to store selected objects, it would actually return nothing cuz the code ran all the way through and didnt wait for me to select what I needed
sel = cmds.ls(selection = True) #this will return nothing
Таким образом, мое решение состояло в том, чтобы назначить переменные внутри метода applyButton
, который будет хранить то, что я выбрал, как я хочу, но я обнаружил, что немного странно вызывать метод, который использует переменную из другого метода из самого этого метода. Например:
class Abc:
def func(*arg):
print(self.var)
def var(self):
self.var = 1
self.func()
abc = Abc()
abc.var()
Пока код работает нормально, но звучит немного странно, вызывая метод func
, который использует переменную из метода var
из самого метода var
? Я не видел, чтобы кто-нибудь делал это раньше. Я имею в виду без класса, переменная, назначенная внутри функции, остается внутри этой функции, и мы можем использовать ее только с return
. Но, похоже, в классе мы можем сделать любую глобальную переменную внутри метода, добавив перед ней self.
? 1016 *
Мой друг также сказал, что в этом случае мы можем использовать @property
, но я не думаю, что разобрался еще. У кого-нибудь есть идеи?
Большое вам спасибо, ребята, и счастливого Нового года, ребята !!!