55 lines
1.0 KiB
Python
55 lines
1.0 KiB
Python
import copy
|
|
|
|
class T:
|
|
def classname(self):
|
|
return self.__class__.__name__
|
|
|
|
def __init__(self):
|
|
self.myValue = "I'm a T."
|
|
|
|
def speak(self):
|
|
print self.classname(), 'Hello', self.myValue
|
|
|
|
def clone(self):
|
|
return copy.copy(self)
|
|
|
|
class S1(T):
|
|
def speak(self):
|
|
print self.classname(),"Meow", self.myValue
|
|
|
|
class S2(T):
|
|
def speak(self):
|
|
print self.classname(),"Woof", self.myValue
|
|
|
|
|
|
print "creating initial objects of types S1, S2, and T"
|
|
a = S1()
|
|
a.myValue = 'Green'
|
|
a.speak()
|
|
|
|
b = S2()
|
|
b.myValue = 'Blue'
|
|
b.speak()
|
|
|
|
u = T()
|
|
u.myValue = 'Purple'
|
|
u.speak()
|
|
|
|
print "Making copy of a as u, colors and types should match"
|
|
u = a.clone()
|
|
u.speak()
|
|
a.speak()
|
|
print "Assigning new color to u, A's color should be unchanged."
|
|
u.myValue = "Orange"
|
|
u.speak()
|
|
a.speak()
|
|
|
|
print "Assigning u to reference same object as b, colors and types should match"
|
|
u = b
|
|
u.speak()
|
|
b.speak()
|
|
print "Assigning new color to u. Since u,b references same object b's color changes as well"
|
|
u.myValue = "Yellow"
|
|
u.speak()
|
|
b.speak()
|