在将数据传递给类构造函数之前,先在Python中预处理数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在将数据传递给类构造函数之前,先在Python中预处理数据相关的知识,希望对你有一定的参考价值。

在我将数据传递给构造函数之前(在预处理繁琐的情况下)创建一个单独的方法(我预先处理数据)是不错的样式,如下所示:

class C():
    def __init__(self, input, more_input):
        self.value = self.prepare_value(input, more_input)

    def prepare_value(self, input, more_input): 
    #here I actually do some nontrivial stuff, over many lines  
    #for brevity I'm illustrating just a short, one-line operation
        value = (input + more_input)/2
        return value


print(C(10, 33).value) # has value 21.5
答案

如果你想这样做,那么我建议两件事。

  1. 通过使用prepare_value()装饰器进行装饰,使static method方法成为@staticmethod。由于它没有对类本身的实例进行任何更改,只返回一个值,那么你不应该将它作为实例的方法。因此,@staticmethod
  2. 表示该方法只能在内部使用名称_prepare_value()。这实际上并没有使它成为私有的,但是对于其他开发人员(即未来的你)说这是一个公认的惯例“这种方法不是为了在外部使用”。

总的来说,我的建议是:

class C():
    def __init__(self, input, more_input):
        self.value = self._prepare_value(input, more_input)

    @staticmethod
    def _prepare_value(input, more_input): 
        value = (input + more_input)/2
        return value

以上是关于在将数据传递给类构造函数之前,先在Python中预处理数据的主要内容,如果未能解决你的问题,请参考以下文章

通过 Redirect 将数据传递给组件

在将数据传递给序列化器 django api 时添加额外的上下文

Kivy:将数据传递给另一个类

vue js将数据传递给组件

Vue:将数据传递给动态组件

Android - 在 onCreateViewHolder(..) 中将数据传递给 ViewHolder 构造函数