[Tutor] How to use a str object, to find the class in exact name?

Steven D'Aprano steve at pearwood.info
Mon Mar 14 23:55:12 CET 2011


Yaşar Arabacı wrote:

> And What I want to do is a small economy application. It will work this 
> way:
> 
> user add a product name, rate how much it like it over 10, and enter its 
> price.
> [repeated as many times as wanted]
> 
> user will enter h(is|er) budget.
> 
> user will use "calcute bundle" to show much of each product s?he should buy
> 
> user will repeat any step as long as s?he likes.


My advice is not to mix the backend calculation engine with the frontend 
user interface in the same code. Keep them separate. So you should write 
  your classes and functions to:

* store products and prices
* calculate best buys for a budget
* etc.

And then have a separate function for the user interface, which handles:

* input and output to the user
* converting the user's text input to numbers, products, etc.
* calling the calculation functions
* printing the results

(The frontend and backend can be in the same file, but they should be 
separate functions or classes.)


At the moment, your code combines calculation with user-interface, which 
is a poor design:

class calculate:
     @staticmethod
     def bundle():
         print "your best bundle is -->"

You have the class responsible for calculating the bundle also 
responsible for displaying it to the user. It is better to separate 
those two functions, and have one class for calculating the bundle and 
returning it (not printing it!) and another function or class 
responsible for calling the calculate class with the user's input, and 
displaying the output to the user.

This will let you more easily change the user-interface, without needing 
to change the engine. Want to put your application in a GUI, or on a 
website? Change the user-interface parts, not the engine.

Hope this helps!




-- 
Steven


More information about the Tutor mailing list