是否存在类似pass关键字的属性占位符?如何定义骨架类属性?
Python骨架类中属性的处理方式
在Python里,定义骨架类的属性时不能直接给属性赋值pass——因为pass是语句而非可赋值的对象。下面是几种常用的替代方案:
赋值为
None:这是最通用的方式,明确表示属性暂时未初始化或无具体值class MyClass: def __init__(self): self.var1 = None self.var2 = None def method1(self): pass使用
...(Ellipsis):作为Python的特殊对象,它的语义更贴合“待实现”的占位场景,比None更能体现骨架类的意图class MyClass: def __init__(self): self.var1 = ... self.var2 = ... def method1(self): pass定义类级占位属性:如果属性是类的通用占位,可直接在类体中定义,无需在
__init__内赋值class MyClass: var1 = ... var2 = ... def __init__(self): pass def method1(self): pass
如果需要强制子类必须实现属性初始化,还可以在基类的__init__中抛出异常,这更适合抽象类场景:
class MyClass: def __init__(self): raise NotImplementedError("子类必须实现__init__并初始化var1、var2") def method1(self): pass
内容的提问来源于stack exchange,提问作者roulette01
相关产品推荐
相关产品推荐

