0

モジュールを使用zope.interfaceして、いくつかのメソッドと属性を持つインターフェイスを宣言しています。また、どうにかして属性名だけでなく、その型も宣言できないのでしょうか?

from zope.interface import Interface, Attribute, implementer, verify

class IVehicle(Interface):
    """Any moving thing"""
    speed = Attribute("""Movement speed""") #CANNOT I DECLARE ITS TYPE HERE?
    def move():
        """Make a single step"""
        pass
4

1 に答える 1

1

を導入することで、属性のタイプを制限できますinvariant

from zope.interface import Interface, Attribute, implementer, verify, invariant

def speed_invariant(ob):
    if not isinstance(ob.speed, int):
       raise TypeError("speed must be an int")

class IVehicle(Interface):
    """Any moving thing"""
    speed = Attribute("""Movement speed""")
    invariant(speed_invariant)

    def move():
        """Make a single step"""
        pass

IVehicleクラスには、それを実装するvalidateInvariantsクラスで不変条件が壊れていないことを検証するために呼び出すことができるメソッドがあります。

IVehicle.validateInvariants(vechile_instance)

ただし、属性のタイプを直接指定する方法はわかりません。

于 2014-05-30T16:06:49.000 に答える