Search code examples
pythonpython-2.7coding-style

Python Multiple file program


For larger programs, in order to be more organized, I have been looking into dividing my code up into different .py files and having the main file that calls upon those files when needed. I have looked around and seen lots of remarks about creating a directory and a SystemPath for Python. Are those reasonable options for a program that could be distributed between a few computers? As a test, I tried to assemble an example:

This is the class named grades in the same directory as main

class student:
    def __init__(self):
        self.name = ""
        self.score = 0
        self.grade = 0

    def update(self,name,score,grade):
        self.score = score
        self.name = name
        self.grade = grade
        print self.score,self.name,self.grade

s = student()
s.update(name,score,grade) 

This is my main script currently:

from grades import score
import random

name = 'carl'
score = random.randrange(0,100)
grade = 11

s = student()
s.score(name,score,grade)

There are some questions I have generally about this method:

  1. Is there a way to import all from different files or do I need to specify each individual class?
  2. If I just had a function, is it possible to import it just as a function or can you only import via a class?
  3. Why is it when I call upon a class, in general, I have to make a variable for it as in the example below?
# way that works
s = student()
s.update(name,score,grade)

# incorrect way
student.update(name,score,grade)

Thank you for your time and thought towards my question.


Solution

    1. Yes.

    You can import instance of student from other script to main script like this:

    from grades import s
    # if your first script is called grades.py
    import random
    
    name = 'carl'
    score = random.randrange(0,100)
    grade = 11
    # you can directly use it without initializing it again.
    s.score(name,score,grade)
    

    2. If you have a function called test() in grades.py, you can import it in this way:

    from grades import test
    
    # then invoke it
    test()
    

    3. This variable stands for the instance of class student. You need this instance to invoke the function inside.