📜  Python3中级主题

📅  最后修改于: 2020-04-07 07:31:28             🧑  作者: Mango

在学习Python基础知识之后,您将有兴趣进一步了解Python3编程语言的更多高级主题。
本文介绍了它们。
请记住,Python完全适用于缩进,建议您通过运行某些程序进行一些练习。使用Tab键为您的代码提供缩进。
本文分为以下五个部分:


  1. 就像所有其他的面向对象编程语言一样,Python支持类。让我们看一下关于Python类的几点.
  • 类由关键字class创建。
  • 属性是属于类的变量。
  • 属性始终是公共的,可以使用点(.)运算符进行访问。例如:Myclass.Myattribute

例如一个类的示例:

# 创建一个叫做MyClass的类
class MyClass:
        # 给类MyClass属性赋值
        number = 0
        name = "noname"
def Main():
        # 创建一个MyClass对象
        # ‘me’ 是一个对象
        me = MyClass()
        # 获取MyClass的属性
        # 使用(.)运算符
        me.number = 666
        me.name = "mango"
        #  str是一个内置函数,创建一个字符串
        print(me.name + " " + str(me.number))
# 告诉python程序入口
if __name__=='__main__':
        Main()

输出:

mango 666

2, 方法
方法是一堆旨在在您的Python代码中执行特定任务的代码。

  • 属于一个类的函数称为方法。
  • 类中所有方法都需要“ self”参数。如果您使用其他OOP语言进行编码,则可以将“ self”视为用于当前对象的“ this”关键字。它取消隐藏当前的实例变量。’self’的工作方式大致类似于’this’。
  • ‘def’关键字用于创建新方法。
    # Python展示类的方法
    class Vector2D:
            x = 0.0
            y = 0.0
            # 创建一个叫做Set的方法
            def Set(self, x, y):
                    self.x = x
                    self.y = y
    def Main():
            # vec是类Vector2D的对象
            vec = Vector2D()
            # 传递值给方法,使用(.)运算符
            vec.Set(6, 6)
            print("X: " + str(vec.x) + ", Y: " + str(vec.y))
    if __name__=='__main__':
            Main()

    输出:

    X: 6, Y: 6

    3, 继承
    继承被定义为特定类从其基类继承要素的一种方式。基类也称为“超类”,而从超类继承的类称为“子类”

    如图所示,派生Derived类可以从其基类继承要素,也可以定义自己的要素。

    # 继承语法
    class derived-classname(superclass-name)
    # Python展示继承
    class Pet:
            #__init__是Python的构造函数
            def __init__(self, name, age):
                    self.name = name
                    self.age = age
    # 类Cat从类Pet继承
    class Cat(Pet):
            def __init__(self, name, age):
                    # calling the super-class function __init__
                    # using the super() function
                    super().__init__(name, age)
    def Main():
            thePet = Pet("宠物", 1)
            jess = Cat("Jess", 3)
            # isinstance() function to check whether a class is
            # inherited from another class
            print("jess是猫吗? " +str(isinstance(jess, Cat)))
            print("jess是宠物吗? " +str(isinstance(jess, Pet)))
            print("宠物是猫吗? "+str(isinstance(thePet, Cat)))
            print("宠物是宠物吗? " +str(isinstance(thePet, Pet)))
            print(jess.name)
    if __name__=='__main__':
            Main()

    输出:

    jess是猫吗? True
    jess是宠物吗? True
    宠物是猫吗? False
    宠物是宠物吗? True
    Jess

    4, 迭代
    迭代器是可以迭代的对象。

    • Python使用__iter __()方法返回该类的迭代器对象。
    • 然后,迭代器对象使用__next __()方法获取下一项。
    • 引发StopIteration Exception时,for循环停止。
      # 本程序的函数,会反转传递给它的string
      class Reverse:
          def __init__(self, data):
              self.data = data
              self.index = len(data)
          def __iter__(self):
              return self
          def __next__(self):
              if self.index == 0:
                  raise StopIteration
              self.index-= 1
              return self.data[self.index]
      def Main():
          rev = Reverse('Drapsicle')
          for char in rev:
              print(char)
      if __name__=='__main__':
          Main()

      输出:

      e
      l
      c
      i
      s
      p
      a
      r
      D

      5,生成器。

      • 创建迭代器的另一种方法。
      • 使用函数而不是单独的类。
      • 生成next()和iter()方法的后台代码。
      • 使用称为yield的特殊语句,该语句保存生成器的状态并为再次调用next()时设置一个恢复点。
        # Python展示生成器
        def Reverse(data):
            # 这就像从100计数到1,每次向后退一(-1)步。
            for index in range(len(data)-1, -1, -1):
                yield data[index]
        def Main():     rev = Reverse('Harssh')
            for char in rev:
                print(char)
            data ='Harssh'
            print(list(data[i] for i in range(len(data)-1, -1, -1)))
        if __name__=="__main__":
            Main()

        输出:

        h
        s
        s
        r
        a
        H
        ['h', 's', 's', 'r', 'a', 'H']