• 【Python基础】lpthw


      一、专有词汇

    • 类(class):告诉python创建新类型的东西。
    • 对象(object):两个意思,即最基本的东西,或者某样东西的实例。
    • 实例(instance):让python创建一个类时得到的东西。
    • def:在类中定义函数。
    • self:在类的函数中,self指代被访问的对象或实例的一个变量。
    • 继承(inheritance):指一个类可以继承另一个类的特性,和父子关系类似。
    • 组合(composition):指一个类可以将别的类作为它的部件构建起来。
    • 属性(attribute):类的一个属性,它来自于组合,而且通常是一个变量。
    • 是什么(is-a):用来描述继承关系。
    • 有什么(has-a):用来描述某个东西是由另一些东西组成的,或者某个东西有某个特征。

      二、措辞练习

    • 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

      三、练习用代码

     1 import random
     2 from urllib.request import urlopen
     3 import sys
     4 
     5 WORD_URL = "http://learncodethehardway.org/words.txt"
     6 WORDS = []
     7 
     8 PHRASES = {
     9     "class %%%(%%%):":
    10       "Make a class named %%% that is-a %%%.",
    11     "class %%%(object):
    	def __init__(self, ***)":
    12       "class %%% has-a __init__ that takes self and *** params.",
    13     "class %%%(object):
    	def ***(self, @@@)":
    14       "class %%% has-a function *** that takes self and @@@ params.",
    15     "*** = %%%()":
    16       "Set *** to an instance of class %%%.",
    17     "***.***(@@@)":
    18       "From *** get the *** function, call it with params self, @@@.",
    19     "***.*** = '***'":
    20       "From *** get the *** attribute and set it to '***'."
    21 }
    22 
    23 # do they want to drill phrases first
    24 if len(sys.argv) == 2 and sys.argv[1] =="english":
    25     PHRASES_FIRST = True
    26 else:
    27     PHRASES_FIRST = False
    28 
    29 # load up the words from the website
    30 for word in urlopen(WORD_URL).readlines():
    31     WORDS.append(str(word.strip(),encoding="utf-8"))
    32 
    33 def convert(snippet, phrase):
    34     class_names = [w.capitalize() for w in
    35                     random.sample(WORDS, snippet.count("%%%"))]
    36     other_names = random.sample(WORDS, snippet.count("***"))
    37     results = []
    38     param_names = []
    39 
    40     for i in range(0, snippet.count("@@@")):
    41         param_count = random.randint(1,3)
    42         param_names.append(', '.join(
    43             random.sample(WORDS, param_count)))
    44 
    45     for sentence in snippet, phrase:
    46         result = sentence[:]
    47 
    48         # fake class class_names
    49         for word in class_names:
    50             result = result.replace("%%%", word, 1)
    51 
    52         # fake other class_names
    53         for word in other_names:
    54             result = result.replace("***", word, 1)
    55 
    56         # fake parameter lists
    57         for word in param_names:
    58             result = result.replace("@@@", word, 1)
    59 
    60         results.append(result)
    61 
    62     return results
    63 
    64 # keep going until they hit CTRL+D
    65 try:
    66     while True:
    67         snippets = list(PHRASES.keys())
    68         random.shuffle(snippets)
    69 
    70         for snippet in snippets:
    71             phrase = PHRASES[snippet]
    72             question, answer = convert(snippet, phrase)
    73             if PHRASES_FIRST:
    74                 question, answer = answer, question
    75 
    76             print(question)
    77 
    78             input("> ")
    79             print(f"ANSWER: {answer}
    
    ")
    80 except EOFError:
    81     print("
    Bye.")
    View Code

      四、阅读更多代码

      找到更多的代码,用前述措辞阅读,找到所有带类的文件,然后完成下列步骤:

      1. 针对每一个类,指出它的名称,以及它是继承于哪些类的。

      2. 列出每个类中的所有函数,以及这些函数的参数。

      3. 列出类中用在self上的所有属性。

      4. 针对每一个属性,指出它是来自哪个类。

  • 相关阅读:
    【Oracle/PLSQL】没事玩一个简单的表充值程序
    findmnt命令查找已挂载的文件系统
    如何让shell脚本变成可执行文件
    在Linux中如何查看文件的修改日期
    Dutree – Linux上的命令行磁盘使用情况分析工具
    用FRP做内网穿透使用远程桌面连接家里的windows电脑
    Dog-用于DNS查询的命令行工具
    【DeFi】一文读懂预言机原理、类型、现状和发展方向
    Vitalik Buterin 解读 Nathan Schneider 论文:加密经济治理的局限与改进思路
    Vitalik:回顾区块链近 5 年经济学进展,以及新出现的问题
  • 原文地址:https://www.cnblogs.com/cry-star/p/10671734.html
Copyright © 2020-2023  润新知