tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
54
Task/Polymorphic-copy/Python/polymorphic-copy-1.py
Normal file
54
Task/Polymorphic-copy/Python/polymorphic-copy-1.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue