Python Class 和 public 位成员
Python Class And public Members
你好,我不想创建一个具有多个功能的 class,每个功能我都需要创建自己的 public 成员,所以我这样做了,但它给了我一个错误
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
我得到第 1 行:'NoneType' 对象没有属性 'File'
两件事:
首先,您没有 return 从 _FileTexture()
获取任何东西——您正在创建一个实例并在没有 return 的情况下调用它的方法。如果想法是设置你想要的实例成员
instance = creatingShadingNode()
instance._FileTexture(name = 'test' , path = 'test\test' )
print instance.File
其次,您没有以常见的 Python 方式创建 class。大多数人会这样做:
class ShadingNodeCreator(object):
def __init__(self):
self.file = None
self.p2d = None
def create_file(name, path, p2d):
# your code here
大部分差异只是外观上的差异,但如果您使用 Python 约定,您的时间会更轻松。从 object
继承给你一个 bunch of useful abilities,并且在 __init__
中声明你的实例变量是个好主意——如果没有别的,它可以清楚地表明 class 可能包含什么.
你好,我不想创建一个具有多个功能的 class,每个功能我都需要创建自己的 public 成员,所以我这样做了,但它给了我一个错误
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
我得到第 1 行:'NoneType' 对象没有属性 'File'
两件事:
首先,您没有 return 从 _FileTexture()
获取任何东西——您正在创建一个实例并在没有 return 的情况下调用它的方法。如果想法是设置你想要的实例成员
instance = creatingShadingNode()
instance._FileTexture(name = 'test' , path = 'test\test' )
print instance.File
其次,您没有以常见的 Python 方式创建 class。大多数人会这样做:
class ShadingNodeCreator(object):
def __init__(self):
self.file = None
self.p2d = None
def create_file(name, path, p2d):
# your code here
大部分差异只是外观上的差异,但如果您使用 Python 约定,您的时间会更轻松。从 object
继承给你一个 bunch of useful abilities,并且在 __init__
中声明你的实例变量是个好主意——如果没有别的,它可以清楚地表明 class 可能包含什么.