在Python中,避免对__init__参数和实例变量使用相同名称的最佳方法是什么?

Cha*_*row 2 python coding-style naming-conventions

什么是在init函数中初始化实例变量的最佳方法.两次使用相同的名字是不好的风格?

class Complex:
     def __init__(self, real, imag):
         self.real = real
         self.imag = imag
Run Code Online (Sandbox Code Playgroud)

对我来说,提出像这样的任意替代名称看起来很草率:

class Complex:
     def __init__(self, realpart, imagpart):
         self.r = realpart
         self.i = imagpart
Run Code Online (Sandbox Code Playgroud)

我不认为这在PEP 8风格指南中得到了解决.它只是说实例变量和方法名称应该是小写的,下划线分隔单词.

Ale*_*ler 13

这可能是主观的,但我不认为两次使用相同名称的风格很差.因为self它不是隐含在Python中,self.real并且real完全不同,并且没有名称隐藏等的危险,因为您在其他语言中遇到过(例如C++/Java,其中命名参数如成员有点不受欢迎).

实际上,给参数提供与成员相同的名称会给出一个强大的语义提示,即参数将逐个映射到成员.

  • +1:如果两个名称相同,它简化了读取代码的过程. (3认同)