2

@property通常のプロパティの使用に微妙な違いがあるかどうか、誰かが知っているかどうか疑問に思っていましたか?

@propertyPython でデコレータを使用する場合、プロパティの初期化で問題が発生する可能性はありますか? このデコレーターは、他の変更可能なプロパティに依存するプロパティであるため、呼び出されるたびに関数によってプロパティを計算できることを理解しています。これらのデコレータのいくつかを書き@propertyましたが、何らかの理由で機能しません。次の形式のエラーが表示されます。

for key in temp_spectra.overall_properties_dictionary:

AttributeError: 'Spectra' object has no attribute 'overall_properties_dictionary'

@property私が理解しているように、これらの sを作成する正しい方法は次のようになります。

from PyQt4 import QtCore, QtGui
class someObject(QtCore.QObject):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    @property
    def some_other_property(self):
        # some complicated function which will recalculate everytime it is called
        # because the other properties may be mutable
        p = self.x + self.y
        return p
class otherObject(QtGui.QTabWidget):
    def __init__(self, someObject):
        print someObject.some_other_property

otherObject(someObject(1,5))

しかし、これはうまくいきます!したがって、コードのどの部分がこれを引き起こしている可能性があるかはわかりません。
私は自分のコードを変換して利用する過程にあることに言及する価値がありますmultiprocessing。これにより問題が発生する可能性はありますか? このタイプのエラーを引き起こすために、初期化で何が問題になる可能性があるのか​​ わかりません。

編集:提案されたように、新しいスタイルのクラスに一致するようにコードを変更しました.*

4

1 に答える 1

4

注目すべきことの 1 つは、プロパティが新しいスタイルのクラスでのみサポートされていることです。これは、あなたのものではありません。

変化する

class someObject:

class someObject(object):
于 2013-03-27T16:02:10.933 に答える