"""
#alternative ways to create an instance of a class
class A():
def __init__(self, num=None, name=None):
self._num = num
self._name = name
@classmethod
def createByNumber(cls, num=None):
return cls(num=num)
@classmethod
def createByName(cls, name=None):
return cls(name=name)
def printMe(self):
print("num {}".format(self._num))
print("name {}".format(self._name))
a = A.createByNumber(21)
a.printMe()
a1 = A.createByName("yaaay!")
a1.printMe()
#num 21
#name None
#num None
#name yaaay!
"""
"""
#simple class composition - one class has a variable which is another class
class Zoo(object):
def __init__(self):
self._animals = []
self._animals = [Lion(), Dog()]
def hello(self):
for animal in self._animals:
#skip animals that are not Lions or Dogs
if not isinstance(animal, Lion) and not isinstance(animal, Dog):
continue
animal.greeting()
class Lion(object):
def greeting(self):
print("roaarrr")
class Dog(object):
def greeting(self):
print("rufff")
z = Zoo()
z.hello()
#roaarrr
#rufff
"""
"""
#doodle creating an instance of a class using a dictionary
class Letter(object):
def __init__(self, **kwargs):
for k,v in kwargs.items():
setattr(self, k, v)
def printParams(self):
for k in self.__dict__.keys():
print("var {}".format(k), getattr(self, k))
dat = dict( a=1,
b=2,
c=3,
d=4,
e=5 )
obj = Letter(**dat)
obj.printParams()
#('var a', 1)
#('var c', 3)
#('var b', 2)
#('var e', 5)
#('var d', 4)
#inspired by
#https://stackoverflow.com/questions/4075190/what-is-how-to-use-getattr-in-python
#https://stackoverflow.com/questions/1398022/looping-over-all-member-variables-of-a-class-in-python
""" Happy Sketching!