Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python - why use "self" in a class?

Tags:

python

oop

How do these 2 classes differ?

class A():     x=3  class B():     def __init__(self):         self.x=3 

Is there any significant difference?

like image 547
ryeguy Avatar asked Jan 24 '09 11:01

ryeguy


1 Answers

A.x is a class variable. B's self.x is an instance variable.

i.e. A's x is shared between instances.

It would be easier to demonstrate the difference with something that can be modified like a list:

#!/usr/bin/env python  class A:     x = []     def add(self):         self.x.append(1)  class B:     def __init__(self):         self.x = []     def add(self):         self.x.append(1)  x = A() y = A() x.add() y.add() print("A's x:", x.x)  x = B() y = B() x.add() y.add() print("B's x:", x.x) 

Output

A's x: [1, 1] B's x: [1] 
like image 52
Douglas Leeder Avatar answered Oct 15 '22 12:10

Douglas Leeder