Python代码,自定义未定义

class makeCode:
    def __init__(self,code):
            self.codeSegment = code.upper()
            if checkSegment(self.codeSegment):
                    quit()
            self.info=checkXNA(self.codeSegment)
    def echo(self,start=0,stop=len(self.codeSegment),search=None): #--> self not defined
            pass

不工作……

>它表示变量self实际上并未定义;
>如果输入不是由nucleotids字母组成的字符串,或者如果包含不能在一起的nucleotids,则函数checkSegment返回1;
>如果发生这种情况就会退出,那就可以了.
>然后它用函数checkXNA分配信息(如果它是RNA或DNA),它返回一个带有信息“dnaSegment”或“rnaSegment”的字符串;工作得很好.

但是那个用于打印更具体信息的函数echo告诉我自己没有定义,但为什么呢?

最佳答案
self未在函数定义时定义,您不能使用它来创建默认参数.

函数定义中的表达式在创建函数时进行评估,而不是在调用函数时进行评估,请参阅“Least Astonishment” and the Mutable Default Argument.

请改用以下技术:

def echo(self, start=0, stop=None, search=None):
    if stop is None:
        stop = len(self.codeSegment)

如果你需要支持None作为stop的可能值(例如,如果显式指定,None是stop的有效值),你需要选择一个不同的唯一标记来使用:

_sentinel = object()

class makeCode:
    def echo(self, start=0, stop=_sentinel, search=None):
        if stop is _sentinel:
            stop = len(self.codeSegment)

转载注明原文:Python代码,自定义未定义 - 代码日志