重命名python中不带s的类变量

2024-06-16 09:56:26 发布

您现在位置:Python中文网/ 问答频道 /正文

不知道该怎么说,但这是交易。我有一个脚本,其中每个变量都是全局定义的,但稍后我想将该脚本转换为一个类,以便更好地进行封装。在

但是,我在脚本中使用的所有变量都需要转换为对象变量。我会改变一些像

x = 5

进入

^{pr2}$

在完成这些之后,脚本中的所有函数都需要转换为类的方法,但是,大多数方法都是数学公式,并且重构了像

z = x ** y + x

进入

z = self.x ** self.y + self.x

真的很伤可读性。在

为了解决这个问题,我在方法的开头输入了这些非常笨拙的重新命名:

def method(self, ...):
  x = self.x
  y = self.y
  ...

它使公式可读,但键入所有的重新命名确实很痛苦,有没有一种更优雅的方法?在


Tags: 对象方法函数self脚本定义def交易
2条回答

嗯,可能还有其他的解决方案,但它们最多都是丑陋的黑客。 但是,您可以通过使用多重赋值来减少代码的麻烦:

x, y = self.x, self.y

此外,x和{}在CPython中使用比self.x和{}更快,因为后者每次使用都需要花费大量的属性查找。在

self只是一个建议的名称。我鼓励你使用它,但在某些情况下最好缩短它。在

class A:
    x = None
    y = None

    def calculate_z(s):
        return s.x ** s.y + s.x

foo = A()
foo.x = 4
foo.y = 2
foo.calculate_z()  # 20

有趣的事实:您甚至可以使用unicode字符,比如®(在Python3中)。在

^{pr2}$

相关问题 更多 >