Python3 中级主题
在了解了Python的基础知识之后,您将有兴趣了解更多关于 Python3 编程语言的更进一步和更高级的主题。
本文涵盖了它们。
请记住, Python完全适用于缩进,建议通过运行一些程序来练习一下。使用 tab 键为您的代码提供缩进。
本文分为以下五个部分:
- 课程
就像所有其他面向对象编程语言一样, Python支持类。让我们看一下Python类的一些要点。- 类由关键字class创建。
- 属性是属于类的变量。
- 属性始终是公共的,可以使用点 (.)运算符访问。例如:Myclass.Myattribute
类的示例例如:
# creates a class named MyClass class MyClass: # assign the values to the MyClass attributes number = 0 name = "noname" def Main(): # Creating an object of the MyClass. # Here, 'me' is the object me = MyClass() # Accessing the attributes of MyClass # using the dot(.) operator me.number = 1337 me.name = "Harssh" # str is an build-in function that # creates an string print(me.name + " " + str(me.number)) # telling python that there is main in the program. if __name__=='__main__': Main()
输出 :
Harssh 1337
- 方法
方法是一堆代码,旨在执行 Python 代码中的特定任务。- 属于类的函数称为方法。
- 所有方法都需要'self'参数。如果您使用其他 OOP 语言进行编码,您可以将“self”视为用于当前对象的“this”关键字。它取消隐藏当前的实例变量。'self' 主要像 'this' 一样工作。
- 'def'关键字用于创建新方法。
# A Python program to demonstrate working of class # methods class Vector2D: x = 0.0 y = 0.0 # Creating a method named Set def Set(self, x, y): self.x = x self.y = y def Main(): # vec is an object of class Vector2D vec = Vector2D() # Passing values to the function Set # by using dot(.) operator. vec.Set(5, 6) print("X: " + str(vec.x) + ", Y: " + str(vec.y)) if __name__=='__main__': Main()
输出 :
X: 5, Y: 6
- 遗产
继承被定义为特定类从其基类继承特征的一种方式。基类也称为“超类”,从超类继承的类称为“子类”
如图所示,Derived 类可以继承其基类的特性,也可以定义自己的特性。# Syntax for inheritance class derived-classname(superclass-name)
# A Python program to demonstrate working of inheritance class Pet: #__init__ is an constructor in Python def __init__(self, name, age): self.name = name self.age = age # Class Cat inheriting from the class 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("Pet", 1) jess = Cat("Jess", 3) # isinstance() function to check whether a class is # inherited from another class print("Is jess a cat? " +str(isinstance(jess, Cat))) print("Is jess a pet? " +str(isinstance(jess, Pet))) print("Is the pet a cat? "+str(isinstance(thePet, Cat))) print("Is thePet a Pet? " +str(isinstance(thePet, Pet))) print(jess.name) if __name__=='__main__': Main()
输出 :
Is jess a cat? True Is jess a pet? True Is the pet a cat? False Is thePet a Pet? True Jess
- 迭代器
迭代器是可以迭代的对象。- Python使用 __iter__() 方法返回类的迭代器对象。
- 然后迭代器对象使用 __next__() 方法获取下一项。
- 当引发 StopIteration 异常时,for 循环停止。
# This program will reverse the string that is passed # to it from the main function 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
- 发电机
- 另一种创建迭代器的方法。
- 使用函数而不是单独的类
- 为 next() 和 iter() 方法生成后台代码
- 使用称为 yield 的特殊语句保存生成器的状态并为再次调用 next() 设置恢复点。
# A Python program to demonstrate working of Generators def Reverse(data): # this is like counting from 100 to 1 by taking one(-1) # step backward. 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']