在python类中设置变量的正确方法

时间:2016-10-06 17:53:01

标签: python class variables standards

在类中使用变量的正确方法是什么?

1-将它们设置为我们获取它们的类属性并从类本身访问它们:

class NeuralNetwork(object):

  def __init__(self, topology):
    self.topology = topology
    self.buildLayers()

  def buildLayers(self):
    for layer in self.topology:
      #do thing

2-传递它们通过我们需要它们的方法而不在课堂上分配,如果它们不是真正有用的变量:

class NeuralNetwork(object):

  def __init__(self, topology):
    self.buildLayers(topology)

  def buildLayers(self, topology):
    for layer in topology:
      #do thing

3-以上两者的混合:

class NeuralNetwork(object):

  def __init__(self, topology):
    self.topology = topology
    self.buildLayers(self.topology) # or self.buildLayers(topology) ?

  def buildLayers(self, topology):
    for layer in topology:
      #do thing

我认为第一个是正确的,但它不允许你为不同目的重用该函数而不为变量赋值,看起来像这样:

self.topology = x
self.buildLayers()

看起来很奇怪但你并不真正理解改变self.topology正在影响self.buildLayers()的调用

2 个答案:

答案 0 :(得分:2)

一般来说,第一种方式是"真正面向对象"方式,比第二和第三更受欢迎。

如果您希望buildLayers函数能够偶尔更改拓扑,请为其指定一个参数。拓扑,默认值=无。

只要你没有通过那个参数。在调用buildLayers时,它将使用this.topology。如果你通过它,它将使用你传递的那个,并且(如果你愿意)将this.topology改为它。

顺便说一下,虽然在开始时遵守这样的规则是明智的,但在编程中没有真正的教条。随着经验的增长,您会发现每个规则都有许多完全合理的例外情况。

这就是编程的乐趣,你永远不会停止从经验中学习。

答案 1 :(得分:0)

第一个是正确的并且是推荐的。因为这将取决于对象。