Professional Documents
Culture Documents
BKclassANDobject 051
BKclassANDobject 051
In [2]:
class A:
print("Hello")
Hello
In [3]:
class B:
print("Hello")
obj=B() #obj is object which is a blue print of class B, B() is object constru
ctor
Hello
In [4]:
class B: #gives empty
x="Hello"
p=B()
In [5]:
class B: #gives empty
x="Hello"
p=B()
p.B()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-5-d35bb12a8451> in <module>
3 p=B()
4
----> 5 p.B()
In [1]:
class B: #gives empty
x="Hello"
p=B()
print(p.B())
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-1-bf0a29743029> in <module>
3 p=B()
4
----> 5 print(p.B())
In [2]:
class B: #gives empty
x="Hello"
p=B()
print(p.B(x))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-f5c6a29d2546> in <module>
3 p=B()
4
----> 5 print(p.B(x))
In [4]:
class B: #gives empty
x="Hello"
p=B()
print(p.x)
Hello
In [6]:
class B: # B is class and b,c are two object
name="Binod"
age=20
def f1():
print("go") #stil no output because f1 should be call
b=B()
c=B()
In [7]:
class B: # B is class and b,c are two object
name="Binod"
age=20
def f1():
print("go") #stil no output because in class f1 should be call through objec
t
b=B()
c=B()
f1()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-7-826e0537cb8f> in <module>
6 b=B()
7 c=B()
----> 8 f1()
In [8]:
class B: # B is class and b,c are two object
name="Binod"
age=20
def f1():
print("go") #stil no output because def f1 has zero arguments
b=B()
c=B()
b.f1() #here one arguments is b
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-ffd60d18f180> in <module>
6 b=B()
7 c=B()
----> 8 b.f1() #here one arguments is b
In [10]:
class B: # B is class and b,c are two object
name="Binod" #class attributes
age=20 #class attributes
def f1(self):
print("go")
b=B()
c=B()
b.f1() #here one arguments is b
c.f1()
go
go
In [11]:
class B: # B is class and b,c are two object
name="Binod" #class attributes
age=20 #class attributes
def f1(self):
print("go")
b=B()
c=B()
b.f1() #here one arguments is b
c.f1()
b.f1()
go
go
go
In [12]:
class B:
name="Binod"
age=20
def f1(s):
s=b+c
b=B(3) #bcz there is more than one arg b and 3.,so it internally call init function
c=B(5)
b.f1()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-3521139cc1f0> in <module>
4 def f1(s):
5 s=b+c
----> 6 b=B(3) #bcz there is more than one arg b and 3.,so it internally call init fu
nction
7 c=B(5)
8 b.f1()
In [13]:
class B:
name="Binod"
age=20
def __init__(self,k):
self.k=k
def f1(self):
print("qwet")
b=B(3)
c=B(5)
b.f1()
qwet
In [14]:
class B:
name="Binod"
age=20
def __init__(self,k):
self.k=k
print(k.b+k.c) #b.k+c.k ,always object.something
def f1(self):
print("qwet")
b=B(3)
c=B(5)
b.f1()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-14-0e744e1c43af> in <module>
7 def f1(self):
8 print("qwet")
----> 9 b=B(3)
10 c=B(5)
11 b.f1()
<ipython-input-14-0e744e1c43af> in __init__(self, k)
4 def __init__(self,k):
5 self.k=k
----> 6 print(k.b+k.c) #b.k+c.k ,always object.something
7 def f1(self):
8 print("qwet")
In [3]:
class B:
name="Binod"
age=20
def __init__(self,k):
self.k=k
print(b.k+c.k)
def f1(self):
print("qwet")
b=B(3)
c=B(5)
b.f1()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-3-d8cf47470195> in <module>
7 def f1(self):
8 print("qwet")
----> 9 b=B(3)
10 c=B(5)
11 b.f1()
<ipython-input-3-d8cf47470195> in __init__(self, k)
4 def __init__(self,k):
5 self.k=k
----> 6 print(b.k+c.k)
7 def f1(self):
8 print("qwet")
In [16]:
class B: # B is class and b,c are two object
name="Binod" #class attributes
age=20 #class attributes
def __init__(self,a):
self.a=a
print(b+c)
def f1(self):
print("qwe")
b=B(3) #here b and 3 are two arguments ,it internally call init funtion which has onl
y one arg.so error
c=B(5)
b.f1()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-16-e0f4cd44f1cf> in <module>
7 def f1(self):
8 print("qwe")
----> 9 b=B(3) #here b and 3 are two arguments ,it internally call init funtion which
has only one arg.so error
10 c=B(5)
11 b.f1()
<ipython-input-16-e0f4cd44f1cf> in __init__(self, a)
4 def __init__(self,a):
5 self.a=a
----> 6 print(b+c)
7 def f1(self):
8 print("qwe")
In [ ]:
In [17]:
def f1(): #no out put bcz cll the function
print("qwe")
In [18]:
def f1(): #no out put bcz cll the function out of block of code
print("qwe")
f1()
In [19]:
def f1(): # gives output but in class f1 should be call through object
print("qwe")
f1()
qwe
In [20]:
class Test:
def sum(self,a,b):
s=a+b
return s
a=int(input("Enter the 1st no. : "))
b=int(input("Enter the 2nd no. " ))
obj=Test()
print("sum is" ,s)
Enter the 1st no. : 23
Enter the 2nd no. 23
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-20-c4b2297093cf> in <module>
6 b=int(input("Enter the 2nd no. " ))
7 obj=Test()
----> 8 print("sum is" ,s)
In [21]:
class Test:
def sum(self,a,b):
s=a+b
return s
a=int(input("Enter the 1st no. : "))
b=int(input("Enter the 2nd no. " ))
obj=Test()
s=obj.sum()
print("sum is" ,s)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-ea76e2c015eb> in <module>
6 b=int(input("Enter the 2nd no. " ))
7 obj=Test()
----> 8 s=obj.sum()
9 print("sum is" ,s)
In [22]:
class Test:
def sum(self,a,b):
s=a+b
return s
a=int(input("Enter the 1st no. : "))
b=int(input("Enter the 2nd no. " ))
obj=Test()
s=obj.sum(a,b) #we can give arg in fn call
print("sum is" ,s)
In [23]:
class Test:
def sum(self,a,b):
s=a+b
return s
a=int(input("Enter the 1st no. : "))
b=int(input("Enter the 2nd no. " ))
obj=Test() #there is one arguments i.e obj so no need init function
obj.sum(a,b)
In [24]:
class Sum:
def __init__(self,a,b):
self.a=a
self.b=b
print(a1.a+a2.a)
a1=Sum(30,20)
a2=Sum(10,5)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-24-af888706d47c> in <module>
8
9
---> 10 a1=Sum(30 ,20 )
11 a2=Sum(10 ,5)
12
<ipython-input-24-af888706d47c> in __init__(self, a, b)
3 self.a=a
4 self.b=b
----> 5 print(a1.a+a2.a)
6
7
In [27]:
class Sum: #no output ,must call thrfunction w.r.t object
def __init__(self,a,b):
self.a=a
self.b=b
def avg(self):
print((self.a+self.b)/2)
a1=Sum(30,20)
a2=Sum(10,5)
In [28]:
class Sum:
def __init__(self,a,b): #self=a1 or a2 ,a=30 or 10 ,b=20 or 5
self.a=a #self.a=a=30 when a1 is call otherwise 10(from above)
self.b=b #self.b=b=20
def avg(self):
print((self.a+self.b)/2) #(30+20)/2
a1=Sum(30,20)
a2=Sum(10,5)
a1.avg()
a2.avg()
25.0
7.5
In [38]:
class Sum:
name=("Binod")
def __init__(self,a,b):
self.a=a
self.b=b
def avg(self): #self is one arg. bcz when we call fn by using obj ,there
will be one object arg.
print((self.a+self.b)/2)
25.0
7.5
Binod
Binod
Out[38]:
'Binod'
In [35]:
class Sum:
name=("Binod")
def __init__(self,a,b):
self.a=a
self.b=b
def avg(self): #self is one arg. bcz when we call fn by using obj ,there
will be one object arg.
print((self.a+self.b)/2)
def intrn(cls): #cls is any arg for fn callthrough obj
print(cls.name)
a1=Sum(30,20)
a2=Sum(10,5)
a1.avg()
a2.avg()
print(a1.name)
print(a2.name)
a1.name
a1.intrn()
a2.intrn()
25.0
7.5
Binod
Binod
Binod
Binod
In [36]:
class Sum:
name=("Binod")
def __init__(self,a,b):
self.a=a
self.b=b
def avg(self): #self is one arg. bcz when we call fn by using obj ,there
will be one object arg.
print((self.a+self.b)/2)
def intrn(cls): #cls is any arg for fn callthrough obj
print(cls.name)
a1=Sum(30,20)
a2=Sum(10,5)
a1.avg()
a2.avg()
print(a1.name)
print(a2.name)
#a1.name
a1.intrn()
a2.intrn()
25.0
7.5
Binod
Binod
Binod
Binod
In [39]:
class Sum:
name=("Binod")
def __init__(self,a,b):
self.a=a
self.b=b
def avg(self): #self is one arg. bcz when we call fn by using obj ,there
will be one object arg.
print((self.a+self.b)/2)
def intrn(cls): #cls is any arg for fn callthrough obj
print(cls.name)
a1=Sum(30,20)
a2=Sum(10,5)
a1.avg()
a2.avg()
print(a1.name)
print(a2.name)
#a1.name
a1.intrn()
a2.intrn()
Sum.intrn(a1) #it will be executed, class name.fn(obj)
25.0
7.5
Binod
Binod
Binod
Binod
Binod
In [5]:
class Sum:
name=("Binod")
def __init__(self,a,b): #self=a1 ,a=30 ,b=20 when fn is call through obj a1.
self.a=a
self.b=b
def __add__(self,o): #self=a1 and o=a2 .there is two arg bcz we have to access tw
o values from two obj
k=self.a + o.a
l=self.a + o.b
m=self.b + o.a
n=self.b + o.b
print(k,l,m,n)
a1=Sum(30,20)
a2=Sum(10,5)
In [1]:
class Sum:
name=("Binod")
def __init__(self,a,b): #self=a1 ,a=30 ,b=20 when fn is call through obj a1.
self.a=a
self.b=b
def __add__(self,o): #self=a1 and o=a2 .there is two arg bcz we have to access tw
o values from two obj
k=self.a + o.a #k=30+10 ,where self means in a1 and o means in a2
l=self.a + o.b
m=self.b + o.a
n=self.b + o.b
print(k,l,m,n)
a1=Sum(30,20)
a2=Sum(10,5)
a3=a1+a2
40 35 30 25
In [9]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
f1()
print(b) #global
print(a) #global
# local variable (f1 call 1st ,so f1 execute lst)
local 10
90
12
In [8]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
print(b) #global
print(a) #global
# f1 not executed bcz not f1 call till now
90
12
In [33]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
x=globals()["a"]
print(a)
f1()
12
local 10
In [34]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
x=globals()["a"] # globals , not global
print(x)
print(a)
f1()
12
local 10
12
In [35]:
b=90
c=50
a=12
print(id(a))
def f1():
a=10
print("local",a)
x=globals()["a"] #same id ie using globals key we can access global value ins
ide a function
print(id(x))
print(a)
f1()
140728822474896
12
local 10
140728822474896
In [36]:
b=90
c=50
a=12
print(id(a))
def f1():
a=10
print("local",a)
x=globals()["a"]=15 #now id will be diff bcz value is diff
print(id(x))
print(a)
f1()
140728822474896
12
local 10
140728822474992
In [38]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
x=globals()["a"]=15 #global variable is 15
print(x)
print(a)
f1()
12
local 10
15
In [10]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
x=globals()["a"]=15 #global variable is 15
print(x)
local 10
15
15
In [39]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
x=globals()["a"]=15 #global variable is 15
print(a)
f1()
12
local 10
In [40]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
x=globals()["a"]=15 #global variable is 15
print(a)
f1()
print(a) #print global value of a after change inside a function ,so 1st f1 should be cal
l, then it got changes
12
local 10
15
In [41]:
b=90
c=50
a=12
def f1():
a=10
print("local",a)
x=globals()["a"]=15 #global variable is 15
print(x) #print 15
print(a)
f1()
print(a) #print 15
12
local 10
15
15
inheritance
In [44]:
class A:
def f1(self): #each class must has its obj for execution
print("f1")
class B:
def f2(self): # must be one arg for callin f2
print("f2")
a=A() #here is only one arg so no init fn
b=B()
a.f1()
b.f2() #to print anything ,there must be fullfill class,object,constructor,fn call ,
actual arg=formal arg
f1
f2
In [45]:
class A:
def f1(self): #each class must has its obj for execution
print("f1")
class B:
def __init__(self,a,b):
print("init")
def f2(self): # must be one arg for callin f2
print("f2")
a=A(3,7) #here is 3 arg(more than one) so init fn is complsary
b=B(8,9)
a.f1()
b.f2()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-45-270870844747> in <module>
7 def f2(self): # must be one arg for callin f2
8 print("f2")
----> 9 a=A(3,7) #here is 3 arg(more than one) so init fn is complsary
10 b=B(8,9)
11 a.f1()
In [46]:
class A:
def __init__(self,a,b): #1st of all, init fn executed without call
print("init A")
def f1(self): #each class must has its obj for execution
print("f1")
class B:
def __init__(self,a,b):
print("init")
def f2(self): # must be one arg for callin f2
print("f2")
a=A(3,7) #here is 3 arg(more than one) so init fn is complsary
b=B(8,9)
a.f1()
b.f2()
init A
init
f1
f1
f2
In [47]:
class A:
def __init__(self,p,q): # we can take any other than p,q
print("init A")
def f1(self): #each class must has its obj for execution
print("f1")
class B:
def __init__(self,a,b): # or other than a,b or same obj name
print("init")
def f2(self): # must be one arg for callin f2
print("f2")
a=A(3,7) #here is 3 arg(more than one) so init fn is complsary
b=B(8,9)
a.f1()
b.f2()
init A
init
f1
f2
In [49]:
f1
f2
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-49-3dd11d947aba> in <module>
9 a.f1()
10 b.f2()
---> 11 b.f1() #f1 is inside class A it gives error ,so only f1 and f2 will be print
In [50]:
#creating one parent class A and chil class B , it is called single inheritence
class A: #parrent/base class
def f1(self):
print("f1")
class B(A): # B is child/derive class
def f2(self):
print("f2")
a=A()
b=B()
a.f1()
b.f2()
b.f1() #f1 is inside class A but B is child class of A,so B inherits all properties from
parents
f1
f2
f1
In [53]:
#creating 3 class, in which A is parrent class of B , and B is parent class of C. it is c
alled multilevel inheritence
class A: #parrent/base class of B
def f1(self):
print("f1")
class B(A): # B is child/derive class
def f2(self):
print("f2")
class C(B): #child of B
def f3(self):
print("f3")
a=A()
b=B()
c=C()
a.f1()
b.f2()
b.f1()
c.f3()
c.f2()
c.f1()
f1
f2
f1
f3
f2
f1
In [54]:
#creating 3 class, in which A is parrent class of Both A and B ,it is called Hierarchical
inheritence
class A: #parrent/base class of B
def f1(self):
print("f1")
class B(A): # child/derive class of A
def f2(self):
print("f2")
class C(A): #child of A
def f3(self):
print("f3")
a=A()
b=B()
c=C()
a.f1()
b.f2()
b.f1()
c.f3()
#c.f2 we can't access
c.f1()
f1
f2
f1
f3
f1
In [55]:
#creating class, in which A and B are parrent class of C ,it is called multiple inherite
nce
class A: #parrent/base class of B
def f1(self):
print("f1")
class B: # child/derive class of A
def f2(self):
print("f2")
class C(A,B): #child of A and B
def f3(self):
print("f3")
a=A()
b=B()
c=C()
a.f1()
b.f2()
c.f3()
c.f1()
c.f2()
f1
f2
f3
f1
f2
In [56]:
#creating class, in which there is more than one parent class and more than one child cl
ass ,
#it is called Hybride inheritence
f1
f2
f1
f3
f1
f4
f2
f1
f3
f1
constructor in inheritance
In [57]:
class A:
def __init__(self):
print("init")
def f1():
print("f1 A")
class B:
def __init__(self):
print("init B")
def f2():
print("f2 B")
a=A()
b=B()
init
init B
In [58]:
class A:
def __init__(self):
print("init")
def f1():
print("f1 A")
class B(A): # init does not inherited by parent
def __init__(self):
print("init B")
def f2():
print("f2 B")
a=A()
b=B()
init
init B
In [60]:
class A:
def __init__(self):
print("init")
def f1(self):
print("f1 A")
class B(A): # init does not inherited by parent
def __init__(self):
print("init B")
def f2(self):
print("f2 B")
a=A()
b=B()
a.f1()
b.f2()
b.f1()
init
init B
f1 A
f2 B
f1 A
In [64]:
class A:
def __init__(self):
print("init")
def f1(self):
print("f1 A")
class B(A): # init does not inherited by parent
def __init__(self):
super().__init__() # now init is inheritd from parent don' missing dot, no col
on
print("init B")
def f2(self):
print("f2 B")
a=A()
b=B()
a.f1()
b.f2()
b.f1()
init
init
init B
f1 A
f2 B
f1 A
In [71]:
class A:
def __init__(self):
print("init")
def f1(self):
print("f1 A")
class B(A): # init does not inherited by parent
def __init__(self):
super().__init__()
print("init B")
super().f1() #f1 will be called by using this method
def f2():
print("f2 B")
a=A()
b=B()
init
init
init B
f1 A
In [73]:
class A:
def __init__(self):
print("init")
def f1(self):
print("f1 A")
class B: # init does not inherited by parent
def __init__(self):
print("init B")
def f2():
print("f2 B")
class C(A,B): #init is inherited from only one out of (A,B) which is left in (A,B)
i.e A
def __init__(self):
print("init c")
super().__init__()
a=A()
b=B()
c=C()
init
init B
init c
init
In [74]:
class A:
def __init__(self):
print("init")
def f1(self):
print("f1 A")
class B: # init does not inherited by parent
def __init__(self):
print("init B")
def f2():
print("f2 B")
class C(B,A): #init is inherited from only one out of (A,B) which is left in (B,A)
i.e B
def __init__(self):
print("init c")
super().__init__()
a=A()
b=B()
c=C()
init
init B
init c
init B
In [ ]: