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)