[Edu-sig] excerpt from real world python class
kirby urner
kirby.urner at gmail.com
Fri Jul 13 02:01:00 EDT 2018
When I'm not doing exotic Martian Math summer school, sharing weird
Portland math no one knows if not an American literature buff (1900s New
England Transcendentalism), I'm teaching night school Intro to Python, in
California, or nationwide, online.
Tonight I was saying that whereas Python is named for Monty Python, I think
Greek Mythology probably has a long half-life (it's not either/or anyway),
so I'm into exploring Vaults of Parnassus etc., not a new idea among
Pythonistas (to link to Greek myths).
This is to explain some of the comments.
>From tonight's summary meetup (last session, 10 of 10):
=====
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 12 16:39:32 2018
@author: Kirby Urner
"""
class I:
"""
a goofy goofy I
normally Pythonistas say self not me, but hey,
it's just a placeholder. Free country.
"""
def __init__(me):
me.stomach = [ ] # empty (subclasses use it)
me.energy = 100
def __repr__(self):
return "I live at {} on Memory Lane".format(id(self))
def __str__(me):
return "Well hello, I'm a self"
def selfie(me):
"Click!"
return me
def __enter__(me):
"""
context manager I am
"""
return me.selfie() # same as return self
def __exit__(me, *oops):
if oops[0]:
return False # woopsy, sorry about that
return True
def __del__(me):
print("I now have one less refcount!")
if __name__ == "__main__":
with I() as me:
print(me)
print([me])
# me sticks around even after context ends
other = I()
print(other, "too")
print([other])
del me
del other
==========
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 12 16:56:25 2018
@author: kurner
"""
from selfcentered import I
class Foe(I):
"""
The mythical Python lived under Mt. Parnassus (Παρνασσός)
and its breath (?) gave the Oracle of Delphi her powers
of diagnosis and prognosis
https://en.wikipedia.org/wiki/Pythia
"""
def __del__(self):
# https://en.wikipedia.org/wiki/Athena_Parthenos
print("Apollo thinks I'm dead, but I escaped to Nashville")
global selfcentered
import selfcentered
selfcentered.Python = self # hide out in another module
class Hero(I):
"""
Apollo is supposed to have slain the Python under Mt. Parnassus
"""
def __init__(self):
super().__init__()
print("A hero is born!")
def eat(self, food : str):
if not type(food) == str:
raise ValueError
self.stomach += [food] # yum!
self.energy += 10
def slay(self):
global Python
if self.energy:
del Python
print("Foe slain")
else:
print("I'm too weary to fight. Feed me!")
self.__spend_energy()
def __spend_energy(self):
if self.energy:
self.energy = (self.energy - 10
if self.energy >= 10
else 0)
if len(self.stomach):
print("Digesting {}".format(self.stomach.pop(0)))
def seek(self):
print("seeking foe")
self.__spend_energy()
def __repr__(self):
return "< Hero Energy:{} Stomach:{} >".\
format(self.energy, len(self.stomach))
if __name__ == "__main__":
Python = Foe() # Foe
Apollo = Hero() # Hero
Apollo.eat("Manly Meal")
print(Apollo.stomach)
Hero.seek(Apollo)
Apollo.seek()
print(repr(Apollo))
Apollo.eat("Rats")
Apollo.eat("Beer")
Apollo.seek()
Apollo.seek()
Apollo.seek()
Apollo.seek()
print(repr(Apollo))
Apollo.slay()
print(repr(Apollo))
Apollo._Hero__spend_energy() # remember name mangling?
print(repr(Apollo))
print("Good bye Apollo")
del Apollo
=======
OUTPUT:
runfile('/Users/mac/Documents/pyt-pr/Session10/heroic_story.py',
wdir='/Users/mac/Documents/pyt-pr/Session10')
A hero is born!
['Manly Meal']
seeking foe
Digesting Manly Meal
seeking foe
< Hero Energy:90 Stomach:0 >
seeking foe
Digesting Rats
seeking foe
Digesting Beer
seeking foe
seeking foe
< Hero Energy:70 Stomach:0 >
Apollo thinks I'm dead, but I escaped to Nashville
Foe slain
< Hero Energy:60 Stomach:0 >
< Hero Energy:50 Stomach:0 >
Good bye Apollo
I now have one less refcount!
selfcentered.Python
Out[26]: I live at 4892551320 on Memory Lane
"""LAB 3 UNTIL 10:10"""
Out[20]: 'LAB 3 UNTIL 10:10'
class Dog:
def bark(self):
print("Bark!")
dog = Dog()
dog.bark()
Bark!
Dog.bark(dog)
Bark!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20180712/3fd6a472/attachment-0001.html>
More information about the Edu-sig
mailing list