[Tutor] Help understanding classes

Bo Morris bo at onemediacorpinc.com
Sat Nov 15 19:19:56 CET 2014


Thank you Alan and Danny. It amazes me at the lengths you guys, as well as everyone else who contributes,  will go to to help explain things to us; it is greatly appreciated!

Alan, I decided to dumb down the learning classes just a little. By this I mean, I am not using Tkinter to learn classes. I am using one of the examples from your website, which I did change it just a little. I figured, I am having a hard time wrapping my head around classes and Tkinter would just add to the confusion.

So, I have the below code. When I run this from terminal, it obviously prints "This is a test." If I may, break the code down and ask questions as it pertains to the code?

#################
class Message:
    def __init__(self, aString):
        self.text = aString

    def printIt(self):
        print self.text

m = Message("This is a test")
m.printIt()

##################

With the first part...
class Message:
    def __init__(self, aString):
        self.text = aString
Will I always use "_init_" when defining the first function in a class? I noticed on your website, you created a class where you did not use "_init_" (see below). Was this because you did not define a function?
class BalanceError(Exception):
      value = "Sorry you only have $%6.2f in your account"

I noticed that I can change "text" to anything and I still get the same results by running the code; I changed them to "blah" just as a test.

When I define a function in a class, will I always use "self" as the first entry in the parenthesis?

On the next part...
m = Message("This is a test")
m.printIt()
I noticed I cannot run "printIt()" unless I make it an object i.e. "m = Message("This is a test")...?"
I noticed I could change "m = Message("This is a test")" to "m = Message(raw_input())," which works.
What if I wanted to create a function in Message that receives text from another function and then prints that text instead of the text from  "m = Message("This is a test")...; can I pass or return values to another function inside a class? The"self" is really throwing me off, when I think about creating different functions that do misc things just to practice. For example, I have a function that kills a Linux program. I just don't see how to rethink that function to where it could be defined in a class?
def kill_proc(process1):
    i = psutil.Popen(["ps", "cax"], stdout=PIPE)
    for proc in psutil.process_iter():
        if proc.name(process1):
            proc.kill()

Would it be something like...?
class processKiller:

    def _init_(self):

    def kill_proc(self, process1):
        i = psutil.Popen(["ps", "cax"], stdout=PIPE)
        for proc in psutil.process_iter():
            if proc.name(process1):
                proc.kill()
Then outside of the class, call it like so...?
p = processKiller()
p.proc.kill()

Again, I am just practicing, trying to wrap my head around classes and understand how to create and use them.

Oh yeah, Alan I preordered your new book maybe a month or so ago. Any word on when it will be released and shipped?

Again, thanks.





















-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20141115/46240160/attachment.html>


More information about the Tutor mailing list