As Diez suggests, if you don't want to litter your global namespace, use
a class:

  class Foo:
    x = 1
    b = 2
    @classmethod
    def A(cls, *args, **kwargs):
      do_stuff_with(Foo.x, Foo.b, args, kwargs)
    @classmethod
    def B(cls,*args, **kwargs):
      do_other_stuff_with(Foo.x, Foo.b, args, kwargs)

  Foo.A(3, 1, 4)
  Foo.B("Hello", recipient="world")

That's not what classes are really for, though ...

If x and b are meant to be global than bite the bullet and *make* them
global.

Assuming there's commonality between A and B (as suggested by the reuse), they should likely be scoped together. This might be via a class (as above), or via a sub-module. Alternatively, if the commonality is with the constants, but not with the functions, one could just use a class as a namespace container for the values:

  class Foo:
    x = 1
    b = 2

  def A(...):
    do_something(42 + Foo.x)
  def B(...):
    do_something_unrelated(3.14159 * Foo.b)

If the constants don't actually share any conceptual commonality, then SteveH is right, that they really should just be globals.

-tkc





--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to