我使用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
答案 0 :(得分: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)
我不知道如何直接指定属性的类型。