Python最佳实践:传递给方法或实例变量

时间:2015-02-25 20:39:35

标签: python

在Python中,我应该在下面的代码中编写方法,如选项1或选项2吗?谢谢!

from someHardware import someHardware

# Option 1, pass the data into method
class SomeClass:

    def getValue( self ):
        rawData = someHardware.getData()
        return self.calculateValue( rawData )

    def calculateValue( self, rawData ):
        return ( rawData * 100 ) - 5

# Option 2, save data as instance variable
class SomeClass:

    def getValue( self ):
        self.rawData = someHardware.getData()
        return self.calculateValue()

    def calculateValue( self ):
        return ( self.rawData * 100 ) - 5

1 个答案:

答案 0 :(得分:1)

如果你的方法被调用calculateValue,最后给它一些计算的东西,这在语义上更清晰。此外,该方法是公开的(没有_将其标记为非API),因此在外部调用它是有意义的。

此外,如果您这样做,您的calculateValue将独立于self,使其基本上为staticmethod,因此:

class SomeClass:

    def getValue( self ):
        rawData = someHardware.getData()
        return self.calculateValue( rawData )

    @staticmethod
    def calculateValue( rawData ):
        return ( rawData * 100 ) - 5

会更清楚。