0

カスタム gobject クラスの 1 つ内のプロパティを使用して、python3/pygobject でいくつかの例外処理を実行しようとしています。私が持っていたコードはこのようなものでした

try:
    label = foo.label # This is a GObject.Property
except Exception:
    label = "fallback"

このテストケースを思いついた問題を理解しようとした後、インタープリターがexceptブロックに到達しなかったことに気付きました

from gi.repository import Gtk, GObject

class foo(GObject.Object):
    @GObject.Property
    def bar(self):
        raise NotImplementedError

fish = foo()
print("Bar: ", fish.bar)

出力

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gi/_gobject/propertyhelper.py", line 403, in obj_get_property
    return prop.fget(self)
  File "test.py", line 6, in bar
    raise NotImplementedError
NotImplementedError
Bar: None

ご覧のとおり、例外が発生してもプロパティが返さNoneれ、プログラムは続行されます。

私もわかりません。

誰もがこれに対する回避策または解決策を知っていますか?

4

1 に答える 1

1

GObject プロパティは例外をサポートしていないため、ここで例外が機能しないことは理解できます。回避策は、getter/setter メソッドを使用することです。

于 2013-10-28T18:45:08.530 に答える