在Python中,我有一个我已经构建的类.
但是,有一种方法可以应用相当特定类型的子字符串搜索过程.这个过程本身可以是一个独立的函数(它只需要一个针头一个大海捞针的字符串),但是让这个函数在类外面感觉很奇怪,因为我的类依赖于它.
这个典型的设计范例是什么?在同一个文件中,将myClassName.py与主类以及类本身之外的所有支持函数一起使用是否典型?或者以模块化为代价将支持功能嵌入到类中更好?
您可以创建一个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)
使用更合适的那个,并且显然哪个更具可读性。:)