习题41 学习面向对象术语
2016-11-12 15:33
861 查看
这一节学习的是面向对象术语。
单词练习
首先要求是要记住一些术语,就是单词的定义。
class:类。告诉Python创建新类型的东西。
object:对象。最基本的东西,或是某个东西的实例。
instance:实例。让Python创建一个类时得到的东西。原文:What you get when you tell Python
to create a class.
def:这是在类里面定义函数的方法。
self:在类的函数中,self指代被访问的对象或者实例的一个变量。
inheritance:继承。指一个类可以继承另一个类的特性,和父子关系类似。
composition:组合。指一个类可以将别的类作为它的部件构建起来,有点儿像车子和车轮的关系。
attribute:属性。类的一个属性,它来自于组合,而且通常是一个变量。
is-a:是什么。用来描述继承关系,如Salmon is-a Fish(鲑鱼是一种鱼)。原文:as
in a "salmon" is-a "fish."
has-a:有什么。用来描述某个东西是由另外一些东西组成的,或者某个东西有某个特征,如Salmon has-a mouth(鲑鱼有一张嘴)。原文:as
in "a salmon has-a mouth."
书上的意思就是要记住上面这些个东西,有什么用一会儿就知道了。
语汇练习
然后给了一些代码吧,大概就是用上了上面的单词(Word)构成了一些短语(Phrase)。
class X(Y)
创建一个叫X的类,它是Y的一种。
class X(object):def__init__(self,J)
类X有一个__init__j接收self和J作为参数。
class X(object):def
M(self,J)
类X有一个函数名称为M,它接收self和J作为参数。
foo = X()
将foo设为类X的一个实例。
foo.M(J)
从foo中找到M函数,并使用self和J参数调用它。
foo.K = Q
从foo中获取K属性,并将其设为Q。
其中每一条的X,Y,M,J,K,Q及foo的地方,都可以将他们当做空白点来对待。
阅读代码
来一段试试,这段代码调用了一个叫urllib的库。
运行之前我要说一下,这段代码应该是从网址上获取了一个库,然后无穷无尽的练习这些术语,但是对于中文母语的我真的蛋疼。
运行结果就不放图了。
主要是要分析一下这段代码。但是我目前水平渣渣,有部分不太懂。
单词练习
首先要求是要记住一些术语,就是单词的定义。
class:类。告诉Python创建新类型的东西。
object:对象。最基本的东西,或是某个东西的实例。
instance:实例。让Python创建一个类时得到的东西。原文:What you get when you tell Python
to create a class.
def:这是在类里面定义函数的方法。
self:在类的函数中,self指代被访问的对象或者实例的一个变量。
inheritance:继承。指一个类可以继承另一个类的特性,和父子关系类似。
composition:组合。指一个类可以将别的类作为它的部件构建起来,有点儿像车子和车轮的关系。
attribute:属性。类的一个属性,它来自于组合,而且通常是一个变量。
is-a:是什么。用来描述继承关系,如Salmon is-a Fish(鲑鱼是一种鱼)。原文:as
in a "salmon" is-a "fish."
has-a:有什么。用来描述某个东西是由另外一些东西组成的,或者某个东西有某个特征,如Salmon has-a mouth(鲑鱼有一张嘴)。原文:as
in "a salmon has-a mouth."
书上的意思就是要记住上面这些个东西,有什么用一会儿就知道了。
语汇练习
然后给了一些代码吧,大概就是用上了上面的单词(Word)构成了一些短语(Phrase)。
class X(Y)
创建一个叫X的类,它是Y的一种。
class X(object):def__init__(self,J)
类X有一个__init__j接收self和J作为参数。
class X(object):def
M(self,J)
类X有一个函数名称为M,它接收self和J作为参数。
foo = X()
将foo设为类X的一个实例。
foo.M(J)
从foo中找到M函数,并使用self和J参数调用它。
foo.K = Q
从foo中获取K属性,并将其设为Q。
其中每一条的X,Y,M,J,K,Q及foo的地方,都可以将他们当做空白点来对待。
阅读代码
来一段试试,这段代码调用了一个叫urllib的库。
运行之前我要说一下,这段代码应该是从网址上获取了一个库,然后无穷无尽的练习这些术语,但是对于中文母语的我真的蛋疼。
import random from urllib import urlopen import sys WORD_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 first PHRASE_FIRST = False if len(sys.argv) == 2 and sys.argv[1] == "english": PHRASE_FIRST = True # load up the words from the website for 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-D try: 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" % answer except EOFError: print "\nBye"
运行结果就不放图了。
主要是要分析一下这段代码。但是我目前水平渣渣,有部分不太懂。
相关文章推荐
- 笨方法学Python—习题41:学习面向对象术语
- DAY6之Python学习笔记:面向对象术语整理
- c++ primer(第五版)学习笔记及习题答案代码版(第十五章)面向对象程序设计
- java学习日记_41:面向对象之抽象的引入、抽象的特点和抽象成员的特点
- 面向对象术语回顾
- 面向对象学习体会
- C#2.0学习3--面向对象基本概念
- (整理)常用面向对象术语中英文对照
- JAVA学习笔记(二)-面向对象程序设计
- 面向对象技术伪术语--主动对象的批判
- 《面向对象基础:C++实现》学习笔记之三
- PHP面向对象及类、方法的学习心得
- 面向对象分析设计学习与探索(一):开篇
- 《面向对象基础:C++实现》学习笔记之七
- 《面向对象基础:C++实现》学习笔记之八
- 面向对象技术伪术语--主动对象的批判 续
- 《面向对象基础:C++实现》学习笔记之四
- UML学习笔记(三):运用面向对象思想
- CG学习(2)——CG的基本语法及核心函数的面向对象简单封装
- J2SE学习笔记(3)面向对象初品