Поскольку я работаю и обновляю класс, я хочу, чтобы экземпляр класса, который уже создан, был обновлен.Как мне это сделать?
class MyClass:
""" """
def __init__(self):
def myMethod(self, case):
print 'hello'
classInstance = MyClass ()
Я запускаю Python внутри Maya и при запуске программного обеспечения создается экземпляр.Когда я вызываю classInstance.myMethod (), он всегда печатает «привет», даже если я изменяю это.
Спасибо,
/ Christian
Более полный пример:
class MayaCore:
'''
Super class and foundational Maya utility library
'''
def __init__(self):
""" MayaCore.__init__(): set initial parameters """
#maya info
self.mayaVer = self.getMayaVersion()
def convertToPyNode(self, node):
"""
SYNOPSIS: checks and converts to PyNode
INPUTS: (string?/PyNode?) node: node name
RETURNS: (PyNode) node
"""
if not re.search('pymel', str(node.__class__)):
if not node.__class__ == str and re.search('Meta', str(node)): return node # pass Meta objects too
return PyNode(node)
else: return node
def verifyMeshSelection(self, all=0):
"""
SYNOPSIS: Verifies the selection to be mesh transform
INPUTS: all = 0 - acts only on the first selected item
all = 1 - acts on all selected items
RETURNS: 0 if not mesh transform or nothing is selected
1 if all/first selected is mesh transform
"""
self.all = all
allSelected = []
error = 0
iSel = ls(sl=1)
if iSel != '':
if self.all: allSelected = ls(sl=1)
else:
allSelected.append(ls(sl=1)[0])
if allSelected:
for each in allSelected:
if nodeType(each) == 'transform' and nodeType(each.getShape()) == 'mesh':
pass
else: error = 1
else: error = 1
else: error = 1
if error: return 0
else: return 1
mCore = MayaCore ()
Последняя строка находится внутри файла модуля (mCore = MayaCore ()).Внутри класса есть тонны методов, поэтому я удалил их, чтобы сократить прокрутку :-) Также есть операторы импорта над классом, но они по какой-то причине испортили форматирование.Вот они:
from pymel.all import *
import re
from maya import OpenMaya as om
from our_libs.configobj import ConfigObj
if getMelGlobal('float', "mVersion") >= 2011:
from PyQt4 import QtGui, QtCore, uic
import sip
from maya import OpenMayaUI as omui
Внутри Maya мы импортируем этот и подклассы этого класса при запуске программы:
from our_maya.mayaCore import *
В других инструментах, которые мы пишем, мы затем вызываем mCore.method () по необходимости.Предостережение, с которым я сталкиваюсь, заключается в том, что когда я возвращаюсь к изменению метода mCore и вызов экземпляра уже запущен, мне нужно перезапустить Maya, чтобы все экземпляры обновились с изменением метода (они по-прежнему будут использоватьмодифицированный метод).