0

だから私はテレビ番組のタイトルを変更するPythonスクリプトを書いています。これは何よりも練習用です。@propertyデコレータを使用しようとしていますが、「var.property」を実行すると、varがプロパティに渡されると思っていたので、splitName()を取得しようとしています。基本クラスのhasDotsプロパティを使用できるようにしますが、Varという名前をプロパティに渡す方法がわかりません。メソッドでこれを実行できることはわかっていますが、プロパティの使用方法を学習しようとしています。基本クラスを正しく機能させることができれば、splitName()メソッドがメインメソッドになります。

これに関する助けをいただければ幸いです。また、私はPythonにかなり慣れていないので、「非Python」である何かをしている場合は、私に知らせてください。

exceptibleExts = ['.avi','.mkv','mp4']

class Base(object):

    def __init__(self, source):
        self.source = source
        self.isTvShow()


    # this method will return the file name
    def fileName(self):
        for name in self.source:
            name, ext = os.path.splitext(name)
            yield name, ext


    @property
    def isTvShow(self):
        names = self.fileName()
        for name in names:
            if str(name[1]) in exceptibleExts and str(name[1]).startswith('.') == False:
                return True
            else:
                return False

    @property
    def hasDots(self):
        names = self.fileName()
        for name in names:
            if '.' in str(name[0]):
                return True
            else: 
                return False


    @property
    def hasDashes(self):
        names = self.fileName()
        for name in names:
            if '-' in str(name[0]):
                return True
            else:
                return False

    @property
    def startswithNumber(self):
        names = self.fileName()
        for name in names:
            if str(name[0].lstrip()[0].isdigit()):
                return True
            else:
                return False

    @property
    def hasUnderscore(self):
        names = self.fileName()
        for name in names:
            if '_' in str(name[0]):
                return True
            else:
                return False

class names(Base):
    def __init__(self, source):
        self.source = source
        #pass

        self.splitName()

    #this method returns true if the show title is in the file name... if not it will return false
    def hasShowTitle(self):
        pass



    def splitName(self):
        #names = self.fileNames
        showInfo = {}
        for name in self.fileName():
            print name.hasDots
4

1 に答える 1

2

何かを学んでいるときは、ドキュメントを注意深く読むことをお勧めします。

ここで3番目のコード例を見てくださいhttp://docs.python.org/3/library/functions.html#property

class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

これは、組み込みのデコレータを使用して定義されたプロパティのセッターとデリッターを定義する方法ですproperty

PS:対応するPython 2のドキュメントはここにあります:http://docs.python.org/2/library/functions.html#property

于 2013-02-22T07:35:36.223 に答える