在类中使用变量的正确方法是什么?
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()
的调用
答案 0 :(得分:2)
一般来说,第一种方式是"真正面向对象"方式,比第二和第三更受欢迎。
如果您希望buildLayers函数能够偶尔更改拓扑,请为其指定一个参数。拓扑,默认值=无。
只要你没有通过那个参数。在调用buildLayers时,它将使用this.topology。如果你通过它,它将使用你传递的那个,并且(如果你愿意)将this.topology改为它。
顺便说一下,虽然在开始时遵守这样的规则是明智的,但在编程中没有真正的教条。随着经验的增长,您会发现每个规则都有许多完全合理的例外情况。
这就是编程的乐趣,你永远不会停止从经验中学习。
答案 1 :(得分:0)
第一个是正确的并且是推荐的。因为这将取决于对象。