Variables visibility for methods

vern.muhr at gmail.com vern.muhr at gmail.com
Wed Aug 31 14:29:27 EDT 2016


On Wednesday, August 31, 2016 at 12:09:16 AM UTC-7, ast wrote:
> Hello
>> I made few experiments about variables visibility
> for methods.
>> class MyClass:
> a = 1
> def test(self):
> print(a)
>> obj = MyClass()
> obj.test()
>> Traceback (most recent call last):
> File "<pyshell#16>", line 1, in <module>
> obj.test()
> File "<pyshell#7>", line 4, in test
> print(a)
> NameError: name 'a' is not defined
>> =========== RESTART: Shell ==============
>> a = 1
>> class MyClass:
> def test(self):
> print(a)
>> obj = MyClass()
> obj.test()
> 1
>> So it seems that when an object's méthod is executed, variables
> in the scope outside the object's class can be read (2nd example),
> but not variables inside the class (1st example).
>> For 1st example, I know that print(MyClass.a) or print(self.a)
> would have work.
>> Any comments are welcome.

In your example a is an attribute of MyClass, not instances of MyClass like obj. Refrencing a as MyClass.a returns 1. See below:
>>> class MyClass:
... a = 1
... def test(self):
... print(MyClass.a)
...
>>> obj = MyClass()
>>> obj.test()
1


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /