Hello i wont to create a class with multiple function each function i need to create its own public Members so i did this but it gives me an error
import maya.cmds as cmds
class creatingShadingNode():
def _FileTexture( self, name = 'new' , path = '' , place2dT = None ):
# craeting file texture
mapping = [
['coverage', 'coverage'],
['translateFrame', 'translateFrame'],
['rotateFrame', 'rotateFrame'],
['mirrorU', 'mirrorU'],
['mirrorV', 'mirrorV']
]
file = cmds.shadingNode ( 'file' , asTexture = 1 , isColorManaged = 1 , n = name + '_file' )
if not place2dT:
place2dT = cmds.shadingNode ( 'place2dTexture' , asUtility = 1 , n = name + '_p2d' )
for con in mapping:
cmds.connectAttr( place2dT + '.' + con[0] , file + '.' + con[1] , f = 1 )
if path:
cmds.setAttr( file + '.fileTextureName' , path, type = 'string' )
self.File = file
self.P2d = place2dT
test = creatingShadingNode()._FileTexture(name = 'test' , path = 'test\test' )
print test.File
i get line 1: 'NoneType' object has no attribute 'File'
Two things:
First, you're not returning anything from
_FileTexture()-- you're creating an instance and calling its method with no return. If the idea is to set instance members you wantSecond, you're not creating the class in the common Python manner. Most people would do it like this:
Most of the difference is cosmetic, but you'll have an easier time if you use the Python conventions. Imheriting from
objectgives you a bunch of useful abilities, and it's a good idea to declare your instance variables in__init__-- if nothing else it makes it obvious what the class may contain.