class FooBar:
def __init__(self, value=42):
self.somevar = value
foo = FooBar()
foo.somevar
foo = FooBar('I want a job')
foo.somevar
class Bird:
def __init__(self):
self.hungry = True
def eat(self):
if self.hungry:
print('Aaaah')
self.hungry = False
else:
print('No, thanks!')
class SongBird(Bird):
def __init__(self):
self.sound = 'Squawk'
def sing(self):
print(self.sound)
sb = SongBird()
sb.eat()
class SongBird(Bird):
def __init__(self):
Bird.__init__(self)
self.sound = 'Squawk!'
def sing(self):
print(self.sound)
sb = SongBird()
sb.eat()
sb.eat()
class SongBird(Bird):
def __init__(self):
super(SongBird, self).__init__()
self.sound = 'Squawk'
def sing(self):
print(self.sound)
sb = SongBird()
sb.eat()
sb.eat()
__len__(self)
__getitem__(self, key)
__setitem__(self, key, value)
__delitem__(self, key)
def checkIndex(key):
if not isinstance(key, int): raise TypeError
if key < 0: raise IndexError
class ArithmeticSequence:
def __init__(self, start=0, step=1):
self.start = start
self.step = step
self.changed = {}
def __getitem__(self, key):
checkIndex(key)
try:return self.changed[key]
except KeyError:
return self.start + key * self.step
def __setitem__(self, key, value):
checkIndex(key)
self.changed[key] = value
def __len__(self):
return len(self.changed.keys())
def __delitem__(self, key):
del self.changed[key]
s = ArithmeticSequence(1,2)
s[4]
s[4] = 2
s[4]
s[-4]
len(s)
del s[4]
__str__(self)
__repr__(self)
class Person:
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __str__(self):
return "Person: %s, %s" % (self.name, self.gender)
p = Person('Bob', 'male')
p
print(p)
class Person:
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __repr__(self):
return "Person: %s, %s" % (self.name, self.gender)
p = Person('Bob', 'male')
p
class Person:
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __str__(self):
return "Person: %s, %s" % (self.name, self.gender)
__repr__ = __str__
p = Person('Bob', 'male')
p
class CounterList(list):
def __init__(self, *arg):
super(CounterList, self).__init__(*arg)
self.counter = 0
def __getitem__(self, key):
self.counter += 1
return super(CounterList, self).__getitem__(key)
c = CounterList(range(10))
c
len(c)
c.counter
c[4]+c[5]
c.counter