python 学习笔记4

来源:互联网 发布:网络贷款信息会泄露吗 编辑:程序博客网 时间:2024/05/22 04:56

Modules, Classes, and Objects

A First-Class Example

class Song(object):    def __init__(self, lyrics):                self.lyrics = lyrics    def sing_me_a_song(self):        for line in self.lyrics:            print line            happy_bday = Song(["Happy birthday to you",                   "I don't want to get sued",                   "So I'll stop right there"])bulls_on_parade = Song(["They rally around the family",                        "With pockets full of shells"])happy_bday.sing_me_a_song()bulls_on_parade.sing_me_a_song()

Learning to Speak Object Oriented
import randomfrom urllib import urlopenimport sysWORD_URL = "http://learncodethehardway.org/words.txt"WORDS = []PHRASES = {    "class %%%(%%%):":      "Make a class named %%% that is-a %%%.",     "class %%%(object):\n\tdef __init__(self, ***)" :      "class %%% has-a __init__ that takes self and *** parameters.",    "class %%%(object):\n\tdef ***(self, @@@)":      "class %%% has-a function named *** that takes self and @@@ parameters.",     "*** = %%%()":      "Set *** to an instance of class %%%.",    "***.***(@@@)":      "From *** get the *** function, and call it with parameters self, @@@.",    "***.*** = '***'":      "From *** get the *** attribute and set it to '***'."}# do they want to drill phrases firstPHRASE_FIRST = Falseif len(sys.argv) == 2 and sys.argv[1] == "english":    PHRASE_FIRST = True# load up the words from the websitefor word in urlopen(WORD_URL).readlines():    WORDS.append(word.strip())def convert(snippet, phrase):    class_names = [w.capitalize() for w in                   random.sample(WORDS, snippet.count("%%%"))]    other_names = random.sample(WORDS, snippet.count("***"))    results = []    param_names = []    for i in range(0, snippet.count("@@@")):        param_count = random.randint(1,3)        param_names.append(', '.join(random.sample(WORDS, param_count)))    for sentence in snippet, phrase:        result = sentence[:]        # fake class names        for word in class_names:            result = result.replace("%%%", word, 1)        # fake other names        for word in other_names:            result = result.replace("***", word, 1)        # fake parameter lists        for word in param_names:            result = result.replace("@@@", word, 1)        results.append(result)    return results# keep going until they hit CTRL- Dtry:    while True:        snippets = PHRASES.keys()        random.shuffle(snippets)        for snippet in snippets:            phrase = PHRASES[snippet]            question, answer = convert(snippet, phrase)            if PHRASE_FIRST:                question, answer = answer, question            print question            raw_input("> ")            print "ANSWER:  %s\n\n" % answerexcept EOFError:    print "\nBye"


0 0
原创粉丝点击