在 python 中弃用 class 的属性

Deprecating properties of class in python

我试图弃用 class 的 属性。

class A:
   def __init__(self,
   variable1: int,
   ##to be deprecated
   variable2: int )
   {....}

预期行为:如果用户尝试使用变量 2,他应该收到警告,指出它已被弃用。

您可以将 variable2 实现为 属性。

import warnings

class A:
    def __init__(self, variable1: int, variable2: int):
        self.variable1 = variable1
        self._variable2 = variable2

    @property
    def variable2(self):
        warnings.warn('The use of variable2 is deprecated.', DeprecationWarning)
        return self._variable2

    @variable2.setter
    def variable2(self, value: int):
        warnings.warn('The use of variable2 is deprecated.', DeprecationWarning)
        self._variable2 = value

您可以只给它一个 None 默认值并确保它没有被设置:

import warnings

class A:
    def __init__(
        self,
        variable1,
        variable2=None,
    ):

        if variable2 is not None:
            warnings.warn(
                "variable2 is deprecated", DeprecationWarning
            )

与 kwargs 一起工作:

>>> A(1, variable2=123)
<ipython-input-4-e722737121fe>:12: DeprecationWarning: variable2 is deprecated

使用位置参数:

>>> A(1, 123)
<ipython-input-4-e722737121fe>:12: DeprecationWarning: variable2 is deprecated