【发布时间】:2020-04-17 13:46:26
【问题描述】:
给定父类:
class Parent():
_private_attr: Int = None
@classmethod
def set_private_attr(cls, value):
if not type(value) is int:
raise ValueError()
cls._private_attr = value
我如何在子类中使用set_private_attr,因为它可能不会被实例化,因此我不能在__init__ 中使用super()?
例如:
def SubClass(Parent):
Parent.set_private_attr(a_value)
是这样吗?有更好的方法吗?
【问题讨论】:
-
不清楚你在问什么。第二个示例不应该是
class SubClass(Parent),在这种情况下它继承set_private_attr类方法吗?如果要在创建子类时覆盖继承的_private_attr值,_private_attr = a_value会这样做;您不需要调用该方法。 -
我更新了问题。 set_private_attr 方法也做验证,所以我想用它。
-
你必须在 类创建之后调用它,然后 -
class SubClass(Parent): pass; SubClass.set_private_attr(a_value).
标签: python python-3.x subclassing private-members