Python 将类方法用于其子类(可能不会实例化)的正确方法是什么?
给定父类:Python 将类方法用于其子类(可能不会实例化)的正确方法是什么?,python,python-3.x,subclassing,private-members,Python,Python 3.x,Subclassing,Private Members,给定父类: 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可能不会被实例化,因此无法在uuu init_uuu中使用sup
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可能不会被实例化,因此无法在uuu init_uuu中使用super,我如何在子类中使用set_private_uattr
例如:
是这样吗?有更好的方法吗?您需要从父类继承,然后派生类可以使用set\u private\u attr class方法 这里有一个例子
class Parent():
_private_attr = None
@classmethod
def set_private_attr(cls, value):
cls._private_attr = value
class Foo(Parent):
pass
foo = Foo()
foo.set_private_attr("bar")
如果要在构造派生类之前设置此选项:
Foo.set_private_attr("bar")
foo = Foo()
print(foo._private_attr)
不清楚你在问什么。第二个例子不应该是class SubClassParent,在这种情况下它继承set\u private\u attr class方法吗?如果要在创建子类期间重写继承的_private_attr值,_private_attr=a_值将执行此操作;你不需要调用这个方法。我更新了问题。set\u private\u attr方法也进行验证,所以我想使用它;SubClass.set\u private\u attra\u value。问题是不会实例化Foo。您也可以在实例化类之前执行此操作。我编辑了我的帖子来展示这一点。
Foo.set_private_attr("bar")
foo = Foo()
print(foo._private_attr)