41.学习面向对象属于
前言
??这是一个学习面向对象术语的程序练习。
一、专有词汇练习
??类(class):告诉Python创建一个新的类。 ??对象(object):两个意思,即最基本的东西,或者某样东西的实例。 ??实例(instance):这是让Python创建一个类时得到的东西。 ??def:这是在类里面定义函数的方法。 ??self:在类的函数中,self指代被访问的对象或者实例的一个变量。 ??继承(inheritance):指一个类可以继承另一个类的特性,和父子关系类似。 ??组合(composition):指一个类可以将别的类作为它的部件构建起来,有点像车子和车轮的关系。 ??属性(attribute):类的一个属性,它来自于组合,而且通常是一个变量。 ??是什么(is-a):用来描述继承关系,如Salmon is-a Fish(蛙鱼是一种鱼)。 ??有什么(has-a):用来描述某个东西是由另外一些东西组成的,或者某个东西有某个特征,如Salmon has-a mouth(蛙鱼有一张嘴)。
二、措辞联系
??接下来给出一些代码,以及用来描述代码的句子:
代码 | 描述 |
---|
class X(Y) | “创建一个叫X的类,它是Y的一种。” | class X(object): def __init__(self, J) | “类X有一个__init__,它接收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:“从foo获取K属性,并将其设置为Q。” |
三、代码测试
??运行这段代码,练习面向对象术语。 ??在Window上键入Python就可以进行练习。
python ex41.py english
import random
from urllib.request import urlopen
import sys
Word_url = 'http://learncodethehardway.org/words.txt'
Words = []
phrases = {
"class %%%(%%%)":
"创建一个叫%%%的类,它是%%%的一种.",
"class %%%(object): \n\t def __init__(self, ***)":
"类%%%有一个__init__,它接收self和***作为参数.",
"class %%%(object): \n\t def ***(self, @@@)":
"类%%%有一个名为***的函数,它接收self和@@@作为参数.",
"*** = %%%()":
"将***设为类%%%的一个实例.",
"***.***(@@@)":
"从***中找到***函数,并使用self和@@@参数调用它.",
"***.*** = '***":
"从***获取***属性,并将其设置为'***'."
}
if len(sys.argv) == 2 and sys.argv[1] == 'english':
phrase_first = True
else:
phrase_first = False
for word in urlopen(Word_url).readlines():
Words.append(str(word.strip(), encoding = 'utf-8'))
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[:]
for word in class_names:
result = result.replace('%%%', word, 1)
for word in other_names:
result = result.replace('***', word, 1)
for word in param_names:
result = result.replace('@@@',word, 1)
results.append(result)
return results
try:
while True:
snippets = list(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)
input('> ')
print(f'answer: {answer}\n\n')
except EOFError:
print('\nBye')
总结
??以上内容介绍了Python的面向对象术语,有关Python、数据科学、人工智能等文章后续会不定期发布,请大家多多关注,一键三连哟(●’?’●)。
|