Phil wrote: > On Thu, 20 Apr 2017 13:43:07 +0100 > Alan Gauld via Tutor <tutor@python.org> wrote: > >> If still confused drop a question here. > > Maybe not totally confused, more a question of best practice. > > Using your example table class, I commented out all from, and including, > "if __name__ == "__main__":" down and saved the file as table_class.py.
That's unnecessary. The code protected by 'if __name__ == "__main__"' is not executed when the module is imported. In fact that's the very purpose of this idiom. > I > then created test.py as follows: > > from table_class import * "Best practice" is to avoid star imports which bind every name from table_class that does not start with "_", including 'tk' to the same name in the importing module. Instead be explicit: import tkinter as tk import table_class ... tab = table_class.DisplayTable(...) That way the maintainer of table_class.py only has to be careful to keep DisplayTable compatible. A change to the import from import tkinter as tk to import tkinter or the definition of names that collide with names in other modules leaves client code unaffected. > top = tk.Tk() > > tab = DisplayTable(top, > ["Left","middle","Right"], > [[1,2,1], > [3,4,3], > [5,6,5]], > datacolor='blue', > cellcolor='yellow', > gridcolor='red', > hdcolor='black') > > tab.pack() > > Two questions: > I can see where tk comes from but I'm unsure of the origin of Tk() other > than a reference to tkinter. Have I used you table class correctly? It > works, of course, but it doesn't look correct. > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor