簡體   English   中英

Python類和公共成員

[英]Python Class And public Members

您好,我不會創建一個具有多個功能的類,每個功能我都需要創建自己的公共成員,所以我這樣做了,但這給了我一個錯誤

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'

兩件事情:

首先,您沒有從_FileTexture()返回任何內容, _FileTexture()在創建實例並調用其方法而沒有返回值。 如果想法是設置所需的實例成員

instance = creatingShadingNode()
instance._FileTexture(name = 'test' , path = 'test\test' )
print instance.File

其次,您不是以通用的Python方式創建類。 大多數人會這樣做:

class ShadingNodeCreator(object):
      def __init__(self):
          self.file = None
          self.p2d = None

      def create_file(name, path, p2d):
          # your code here

大部分差異是外觀上的,但是如果使用Python約定,您會更輕松。 object繼承可以為您提供許多有用的功能 ,並且在__init__聲明實例變量是一個好主意-如果沒有其他說明,則可以很明顯地看出該類可能包含的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM