I tried this class a couple of different ways and I had it print just memory location I think one way now I have an error that says: Traceback (most recent call last):
File "F:\Python_Stuff\CSC143-901\Lexicon.py", line 83, in <module>
source = Lexicon.OpenFile('word')
TypeError: unbound method OpenFile() must be called with Lexicon instance as first argument (got str instance instead)

I think if I can get the open and read part working the rest should be easy to figure out and I am using just a simple txt file called word to do the operations on and I included that as an attachment. This is a course in Object Oriented programming and the python language is just a tool so we dont talk about it in class and the instructor does not seem to want to teach it he says he is not teaching the language so that makes it difficult. The book Object Oriented Programming with Python just has examples of opening writing and closing file which I do get to work.

I did get this to work normally but I am having trouble creating my own class and getting it to work.

# Lexicon Class read and write a file
"""This is the Lexicon Class"""
class Lexicon:
        def __init__(self):
                self._Contains = ' '
                self._Add= ' ' 
                self._Remove = ' ' 
                self._ReadLexicon = ' '
                self._WriteLexicon(' ')
                self.openfile = ' '

        def Contains(self,Contains):
                filename = raw_input('Enter file name')
                source = file(filename)
                lexicon = lexlist()
                txtword = raw_input('Input what you are searching for in the file')
                for line in open("filename"):
                        if txtword in line:
                                return True
                        else:
                                return False
                    
                       
                             
        def Add(self,Add):
                #Add word to the file
                wordfile = file(source)
                lexicon = lexlist()
                for item in wordfile:
                        lexicon.append(item.rstrip('\n'))


        def Remove(self,Remove):
                #remove word from the file
                wordfile = file(source)
                lexicon = lexlist()
                for item in wordfile:
                        lexicon.remove(item)
                  
          
        def ReadLexicon(self,ReadLexicon):
                source = None
                while not source:                  # still no successfully opened file
                    filename = raw_input('What is the filename? ')
                    try:
                        source = file(filename)
                    except IOError:
                        print 'Unable to open file', filename
                    return source

        def WriteLexicon(defaultName):
                """Repeatedly prompt user for filename until successfully opening with write access.

                                  """
                writable = None
                while not writable:                # still no successfully opened file
                        prompt = 'What should the output be named [%s]? '% defaultName
                        filename = raw_input(prompt)
                if not filename:                 # user gave blank response
                        filename = defaultName         # try the suggested default
                try:
                        writable = file(filename, 'w')
                except IOError:
                        print 'Sorry. Unable to write to file', filename
                return writable

        def OpenFile(self,name):
                  source = None
                  while not source:                  # still no successfully opened file
                            filename = raw_input('What is the filename? ')
                            try:
                                    source = file(filename)
                            except IOError:
                                   print 'Sorry. Unable to open file', filename
                            return source
        


##Test the Lexicon program
print'This is a test program for the Lexicon file'
#open the requested file
source = Lexicon.OpenFile('word')
##Lexicon.OpenFile()
##Lexicon.ReadLexicon(source)

print'This is what was in the file',source

#add something to the file
##Lexicon.Add()
#add something and show the file again for testing
##Lexicon.ReadLexicon()
print'Here is the file again with what you added',source

Recommended Answers

All 3 Replies

You would call it this way (an intro to classes):

##Test the Lexicon program
print'This is a test program for the Lexicon file'

# an instance of the class
lex_instance = Lexicon()
# the class instance now exists so we can call it's members
source = lex_instance.OpenFile('word')

Your design is ununderstandable, but I did something to get it print the content of given filename as it's str or ask user the filename as input:

# Lexicon Class read and write a file
"""This is the Lexicon Class"""
class Lexicon:
    def __init__(self, filename=None):
        self.file = None
        while not self.file:
           if not filename:
              filename = raw_input('What is the filename? ')
           try:
               self.file = open(filename)
           except IOError:
               print 'Enter correct filename'
               filename = ''
           else:
                self.source = self.file.read()

    def __str__(self):
        return self.source


##Test the Lexicon program
print'This is a test program for the Lexicon file'
#open the requested file
source = Lexicon('word.txt')
print source
other = Lexicon()
print 'In that file is:'
print other

Do one function and test!

Thanks a lot this helped out and i was able to get through this problem.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.