在课堂上放置支持功能的最佳位置在哪里?

MyN*_*han 5 python class

在Python中,我有一个我已经构建的类.

但是,有一种方法可以应用相当特定类型的子字符串搜索过程.这个过程本身可以是一个独立的函数(它只需要一个针头一个大海捞针的字符串),但是让这个函数在类外面感觉很奇怪,因为我的类依赖于它.

这个典型的设计范例是什么?在同一个文件中,将myClassName.py与主类以及类本身之外的所有支持函数一起使用是否典型?或者以模块化为代价将支持功能嵌入到类中更好?

Ziz*_*212 0

您可以创建一个staticmethod,如下所示:

class yo:
    @staticmethod
    def say_hi():
        print "Hi there!"
Run Code Online (Sandbox Code Playgroud)

然后,你可以这样做:

>>> yo.say_hi()
Hi there!
>>> a = yo()
>>> a.say_hi()
Hi there!
Run Code Online (Sandbox Code Playgroud)

它们可以非静态和静态地使用(如果有意义的话)。

关于把你的函数放在哪里......

如果类需要某个方法,并且该方法适合执行该类特定的数据,则将其设为方法。这就是您想要的:

class yo:
    self.message = "Hello there!"
    def say_message(self):
        print self.message
Run Code Online (Sandbox Code Playgroud)

我的say_message依赖于类实例特有的数据。

如果您觉得除了类方法之外还需要一个函数,请务必继续。使用最适合您的脚本的一种。有很多这样的例子,包括在 python 内置函数中。以生成器对象为例:

a = my_new_generator()
a.next()
Run Code Online (Sandbox Code Playgroud)

也可以这样做:

a = my_new_generator()
next(a)
Run Code Online (Sandbox Code Playgroud)

使用更合适的那个,并且显然哪个更具可读性。:)