Python 当使用识字编程时,如何处理相同的方法名?
我想使用一个有文化的编程工具来编写python程序。我选择的工具是noweb。我的IDE是emacs 我遇到的问题是,我的类具有相同的方法名。例如,python程序将web服务客户端实现到几个web服务服务器,每个服务器都有一个搜索服务。乍一看,我会将其编码如下: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
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
。