2005/11/29, Kent Johnson <[EMAIL PROTECTED]>: > Negroup - wrote: [cut]
> Obviously this doesn't do what you want. The problem is that class A is > seeing the limit defined in it's module. 'global' variables in Python > actually have module scope, there is no truly global scope in Python (OK, > there's the __builtin__ scope, but this is a beginner's list!) > IMO the best solution is to pass limit as a parameter to A's constructor and > save it as an instance attribute: > > class A: > def __init__(self, limit): > self.limit = limit > self.num = 20 > def info(self): > return self.limit > def inc_num(self): > self.num += 1 > def check(self): > return self.num > self.limit > > Now you can create whatever kind of A's you want: > from module import A > a = A(30) > etc. This is true. However following this approach I have touched the code in module.py (the original), and I'd avoid to do that. > > Another way to do this is to make limit a class attribute. Then you can > change it in subclasses: Idem [cut] A way I found is to import module directly and then simply assign to it the property limit: >>> import module >>> module.limit = 25 >>> a = module.A() >>> b = module.A() (25, 25) This however has a side effect (that luckily is not a big problem, because I don't need to change limit after the first time): >>> module.limit = 26 >>> a.info(), b.info() (26, 26) > > where is the value 30 coming from? > > from module.limit. I have some difficulties understanding this. In my previous post the syntax is: from module import A and so 'module' is not imported. Thanks for your attention _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor