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
Not working…
- it says that the variable self is not defined when it actually was;
- the function
checkSegmentreturns 1 if the input was not a string made of nucleotids letter, or if that contains nucleotids that can’t be together; - it quits if that happens, that’s ok it works perfectly;
- then it assigns the information (if it’s RNA or DNA) checking with the function
checkXNAthat returns a string with the information “dnaSegment” or “rnaSegment”; works perfectly.
But then the function echo which will be designed for printing more specific information tells me that self is not defined, but why?
selfis not defined at function definition time, you cannot use it to create a default argument.Expressions in a function definition are evaluated when the function is created, not when it is being called, see "Least Astonishment" and the Mutable Default Argument.
Use the following technique instead:
If you need to support
Noneas a possible value forstop(e.g.Noneis a valid value forstopif specified explicitly), you’ll need to pick a different unique sentinel to use: