关于后端:Python入门系列七开发常说的累与对象

37次阅读

共计 3440 个字符,预计需要花费 9 分钟才能阅读完成。

类与对象

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"])

正文完
 0