Python 当使用识字编程时,如何处理相同的方法名?

Python 当使用识字编程时,如何处理相同的方法名?,python,literate-programming,noweb,Python,Literate Programming,Noweb,我想使用一个有文化的编程工具来编写python程序。我选择的工具是noweb。我的IDE是emacs 我遇到的问题是,我的类具有相同的方法名。例如,python程序将web服务客户端实现到几个web服务服务器,每个服务器都有一个搜索服务。乍一看,我会将其编码如下: class wsca: def search(self, client, searchInput): pass class wscb: def search(self, client, searchI

我想使用一个有文化的编程工具来编写python程序。我选择的工具是noweb。我的IDE是emacs

我遇到的问题是,我的类具有相同的方法名。例如,python程序将web服务客户端实现到几个web服务服务器,每个服务器都有一个搜索服务。乍一看,我会将其编码如下:

class wsca:
    def search(self, client, searchInput):
        pass

class wscb:
    def search(self, client, searchInput):
        pass
编织的结果显示搜索被定义了两次,并且不可能看到在代码中调用了
wsca.search()
的位置和调用了
wscb.search()
的位置

为了解决这个问题,我可以想到的一个选择是给方法指定唯一的名称,但我认为这不是一个可接受的解决方案


有人能解决这个问题吗?

创建一个父类,其中包含一个
search
副本,并从中继承。如果两个
search
方法不同,那为什么会有问题呢?一个方法的名称包括它的类,所以
wsca.search
wscb.search
是两个不同方法的名称,所以应该没有问题。@cdarke-谢谢你的评论。我遇到的问题是noweb生成的索引。它们显示了定义和使用函数调用的位置。您可以想象,对于许多名为search的方法,这些索引变得不那么有用,因为不同的搜索方法之间没有区别。@martineau-谢谢您的评论。我有两个问题。首先,当noweb看到“wsca.search”时,它会在索引中将其标记为对“search”的调用。其次,名称“wsca”将根据python编码的不同而变化,因为对象实例的名称可以自由选择。noweb可能永远看不到
wsca.search
引用,除非代码引用的是类方法而不是实例的方法
wsca
wscb
是类的名称,而不是它们的实例。通常在通过调用类定义类之后创建类实例。i、 e.
inst\u name=wsca()
。然后可以使用
inst_name调用该方法。search(args…
其中
inst_name
可以是任何有效的标识符名称。要知道调用的是哪个
search()
,需要知道
inst\u name
对象的类型,在本例中是
wsca
,因此实际调用的方法是
waca.search
。创建一个包含
search
副本的父类,并从中继承。如果两个
search
方法不同,那为什么会有问题呢?一个方法的名称包括它的类,所以
wsca.search
wscb.search
是两个不同方法的名称,所以应该没有问题。@cdarke-谢谢你的评论。我遇到的问题是noweb生成的索引。它们显示了定义和使用函数调用的位置。您可以想象,对于许多名为search的方法,这些索引变得不那么有用,因为不同的搜索方法之间没有区别。@martineau-谢谢您的评论。我有两个问题。首先,当noweb看到“wsca.search”时,它会在索引中将其标记为对“search”的调用。其次,名称“wsca”将根据python编码的不同而变化,因为对象实例的名称可以自由选择。noweb可能永远看不到
wsca.search
引用,除非代码引用的是类方法而不是实例的方法
wsca
wscb
是类的名称,而不是它们的实例。通常在通过调用类定义类之后创建类实例。i、 e.
inst\u name=wsca()
。然后可以使用
inst_name调用该方法。search(args…
其中
inst_name
可以是任何有效的标识符名称。要知道调用的是哪个
search()
,需要知道
inst\u name
对象的类型,在本例中是
wsca
,因此实际调用的方法是
waca.search