Maya Python: Unbound Method due to Reload()

2024/10/15 20:23:45

I have two files that import the same object tracking method from a third file. It works something like this

file TrackingMethodclass Tracker(object):def __init__(self,nodeName=None,dag=None,obj=None):#Does some open maya stuff to get the dag pathdef fullpath(self):return dag.fullpath()file Shapes #classes that create objects with shape nodesimport TrackingMethod as trmreload(trm)class circle(trm.Tracker):def __init__(self,nodeName=None,dag=None,obj-None):#does some shape related stuff then inits trackertrm.Tracker.__init__(self,nodeName=nodeName,dag=dag,obj=obj)file ShaderNodes #Classes that create shading nodesimport TrackingMethod as trmreload(trm)class shaderThingy(trm.Tracker):def __init__(self,nodeName=None,dag=None,obj-None):#does some shader related stuff then inits trackertrm.Tracker.__init__(self,nodeName=nodeName,dag=dag,obj=obj)

Here's the problem. The error occurs at the trm.Tracker.init. If I use both files and I happen to reload() either ShaderNode or Shapes, the methods of the other will no longer recognize they're subclasses of the original TrackingMethod class. By reloading the other class loses it's reference back and I get either:

>>unbound method __init__() must be called with Tracker instance as first argument (got circle instance instead) 

or

>>unbound method __init__() must be called with Tracker instance as first argument (got ShaderThingy instance instead) 

..depending on which gets reloaded. Whichever is the last to get reloaded works, and the previously reloaded gets unbound.

Mind you, I need to reload these scripts to test my changes. I know once the reloads are out of there they'll no longer be unbound, but I need to see my changes as I work.

What do I do?

Answer

You can try importing TrackingMethods twice, with two names.

In shapes:

import TrackingMethods as trm_shapesclass shape(trm_shapes.Tracker) ...

And in shaders:

import TrackingMethods as trm_shadersclass shader(trm_shaders.Tracker) ...

This should work, as long as nobody outside tries to check whether a shader or shape objects are the instance of a Tracker - it will fail.

https://en.xdnf.cn/q/117793.html

Related Q&A

How to append to a table in BigQuery using Python BigQuery API

Ive been able to append/create a table from a Pandas dataframe using the pandas-gbq package. In particular using the to_gbq method. However, When I want to check the table using the BigQuery web UI I s…

Splitting values out of a CSV Reader Python

Here is my current code a_reader = None a_reader = open(data.csv, rU) a_csv_reader = csv.reader(a_reader)for row in a_csv_reader:print row a_reader.close()count = 0 sum = 0.0 a_reader = open(…

python - list variable not storing proper result in recursion

I am trying to store all possible parenthesisation of a list through recursion.Example: printRange(0,3) Answer will be [[0],[1], [2]], [[0], [1, 2]], [[0, 1], [2]], [[0, 1, 2]]I could get a right answe…

Embedding matplotlib canvas into tkinter GUI - plot is not showing up, but no error is thrown

Running the python python script below does not show the embedded matplotlib plot. However it also throws no error message. Upon running the script, it is supposed to display a GUI displaying 4 buttons…

Can I get rid of this b character in my print statement? [duplicate]

This question already has answers here:What does a b prefix before a python string mean?(2 answers)Closed 7 years ago.Im wondering what this b charcter is and why its appearing. Im also wondering if I…

Python tkinter: configure multiple labels with a loop

I have a window with multiple labels. Instead of configuring each label individually, I want to use a for loop to configure them.Basically, what I get from the below code is all labels are showing the …

How do you create a sitemap index in Django?

The Django documentation is very minimal and I cant seem to get this to work.Currently I have 3 individual sitemaps, and I would like to create a sitemap index for them: (r^sitemap1\.xml$, django.contr…

Numpy Append to Array

I’m building a project for the Raspberry Pi that turns a relay on and off random times in a specific time window. To manage the time slots, I want to use a two-dimensional array that’s generated dail…

Output of numpy.diff is wrong

heres my problem: I am trying to use numpy to compute (numerical) derivatives, but I am finding some problems in the value the function numpy.diff returns (and numpy.gradient as well). What I find is t…

Calculate Fibonacci numbers up to at least n

I am trying to make a function that allows a user to input a number and the result will be a list containing Fibonacci numbers up to the input and one above if the input is not in the series. For examp…