Python入门系列(七)开发常说的“累”与“对象”

类与对象

Python是一种面向对象的编程语言。

要创建类,请使用关键字class

class MyClass:   x = 5 

创建一个名为p1的对象,并打印x的值

p1 = MyClass() print(p1.x) 

所有类都有一个名为__init_()的函数,该函数总是在初始化类时执行。

class Person:   def __init__(self, name, age):     self.name = name     self.age = age  p1 = Person("John", 36)  print(p1.name) print(p1.age) 

对象也可以包含方法。对象中的方法是属于对象的函数。

class Person:   def __init__(self, name, age):     self.name = name     self.age = age    def myfunc(self):     print("Hello my name is " + self.name)  p1 = Person("John", 36) p1.myfunc() 

self参数是对类的当前实例的引用,用于访问属于该类的变量。
它不必命名为self,您可以随意调用它,但它必须是类中任何函数的第一个参数:

# Use the words mysillyobject and abc instead of self class Person:   def __init__(mysillyobject, name, age):     mysillyobject.name = name     mysillyobject.age = age    def myfunc(abc):     print("Hello my name is " + abc.name)  p1 = Person("John", 36) p1.myfunc() 

您可以修改以下对象的属性

p1.age = 40 

可以使用del关键字删除对象上的属性

del p1.age 

可以使用del关键字删除对象

del p1 

Python继承

创建父类

class Person:   def __init__(self, fname, lname):     self.firstname = fname     self.lastname = lname    def printname(self):     print(self.firstname, self.lastname)  #Use the Person class to create an object, and then execute the printname method:  x = Person("John", "Doe") x.printname() 

创建子类

class Student(Person):   pass 

使用Student类创建对象,然后执行printname方法

x = Student("Mike", "Olsen") x.printname() 

添加__init_()函数时,子类将不再继承父类的_ init_()函数。

class Student(Person):   def __init__(self, fname, lname):     #add properties etc. 

要保留父函数的__init_()函数的继承,请添加对父函数的调用

class Student(Person):   def __init__(self, fname, lname):     Person.__init__(self, fname, lname) 

Python还有一个super()函数,它将使子类继承其父类的所有方法和属性

class Student(Person):   def __init__(self, fname, lname):     super().__init__(fname, lname) 

通过使用super()函数,您不必使用父元素的名称,它将自动从其父元素继承方法和属性。

添加属性

class Person:   def __init__(self, fname, lname):     self.firstname = fname     self.lastname = lname    def printname(self):     print(self.firstname, self.lastname)  class Student(Person):   def __init__(self, fname, lname, year):     super().__init__(fname, lname)     self.graduationyear = year  x = Student("Mike", "Olsen", 2019) print(x.graduationyear) 

添加方法

class Student(Person):   def __init__(self, fname, lname, year):     super().__init__(fname, lname)     self.graduationyear = year    def welcome(self):     print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear) 

Python迭代器

列表、元组、字典和集合都是可迭代对象。它们是可迭代的容器,您可以从中获取迭代器。

mytuple = ("apple", "banana", "cherry") myit = iter(mytuple)  print(next(myit)) print(next(myit)) print(next(myit)) 

创建迭代器

__iter__()方法的作用类似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。 __next_()方法还允许您执行操作,并且必须返回序列中的下一项。 
class MyNumbers:   def __iter__(self):     self.a = 1     return self    def __next__(self):     x = self.a     self.a += 1     return x  myclass = MyNumbers() myiter = iter(myclass)  print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) 

为了防止迭代永远持续下去,我们可以使用StopIteration语句。

class MyNumbers:   def __iter__(self):     self.a = 1     return self    def __next__(self):     if self.a <= 20:       x = self.a       self.a += 1       return x     else:       raise StopIteration  myclass = MyNumbers() myiter = iter(myclass)  for x in myiter:   print(x)  

作用域

如以上示例所述,变量x在函数外部不可用,但在函数内部的任何函数中都可用

def myfunc():   x = 300   def myinnerfunc():     print(x)   myinnerfunc()  myfunc() 

如果需要创建全局变量,但仍停留在局部范围内,则可以使用global关键字。

Python模块

要创建模块,只需将所需代码保存在文件扩展名为.py的文件中

# Save this code in a file named mymodule.py def greeting(name):   print("Hello, " + name) 

现在,我们可以使用刚才创建的模块,方法是使用import语句

import mymodule  mymodule.greeting("Jonathan") 

模块中的变量

# Save this code in the file mymodule.py person1 = {   "name": "John",   "age": 36,   "country": "Norway" } 
import mymodule  a = mymodule.person1["age"] print(a) 

导入模块时,可以使用as关键字创建别名

import mymodule as mx  a = mx.person1["age"] print(a) 

有一个dir()函数来列出模块中的所有函数名(或变量名)

import platform  x = dir(platform) print(x) 

通过使用from关键字,您可以选择仅从模块导入零件。

def greeting(name):   print("Hello, " + name)  person1 = {   "name": "John",   "age": 36,   "country": "Norway" } 
from mymodule import person1  print (person1["age"]) 

您的关注,是我的无限动力!

公众号 @生活处处有BUG

商匡云商
Logo
注册新帐户
对比商品
  • 合计 (0)
对比
0
购物车