大数跨境
0
0

Python中创建类的六重境界

Python中创建类的六重境界 AI算法之道
2022-11-26
1
导读:本文重点介绍了在Python中创建类的六重境界,并给出了相应的代码示例。,并给出了相应的代码示例。






01


引言



大家首先需要记住一句话:类是模板,而实例则是根据类创建的对象。在面向对象编程语言中,类class最为常见。为此,本文重点来介绍在Python中创建类的六重境界。

闲话少说,我们直接开始吧!




02


 Level1:Basic class


在Python中,类通过 class 关键字定义,最简单的创建类的代码样例如下:
class Dog:    passdog = Dog()   # initializing





03


   Level 2:Basic class with basic method


我们这里不再直接使用关键字pass,在类内什么都不做。因此,我们可以考虑通过添加相应的成员函数来实现相应的功能。

样例代码如下:
class Dog:    def bark(self):        print("woof")dog = Dog()dog.bark()   # woof





04


 Level 3:使用 __init__ 函数


接着让我们在类内添加一个__init__魔法方法,首先需要理解的是,两个下划线开头的函数是声明该属性为类内私有函数,同时__init__函数支持带参数类的初始化,也可同时声明该类的属性(类内成员变量)。

样例代码如下:
 class Dog:    def __init__(self, name, age):        self.name = name        self.age = age    def bark(self):        print("woof)dog1 = Dog("rocky", 4)   # name="rocky" age=4dog2 = Dog("lucky", 5)   # name="lucky" age=5





05


 Level 4: 从父类继承


通过使用类Dog(Animal)语法,我们可以使Dog类继承父类Animal类。这意味着Dog类可以访问父类Animal类中的任何属性或方法。

样例代码如下:
class Animal:    def speak(self):        print("hello")class Dog(Animal):    passdog = Dog()dog.speak()   # hello




06


 Level 5:  从其他类继承__init__函数


如果我们的子类与父类有不同的__init__函数,此时我们可以在子类中使用super().__init__。这实际上是在子类中的__init__函数中调用父类中的__init__函数。

样例代码如下:
 class Rectangle:    def __init__(self, length, width):        self.length = length        self.width = width    def area(self):        return self.length * self.widthclass Square(Rectangle):    def __init__(self, length):        super().__init__(length, length)   # Rectangle's __init__

上述代码中,在类Square__init__函数中,我们使用super().__init__函数,本质上是调用父类Rectangle中的__init__函数。由于正方形中的长度等于宽度,所以这里我们将length传递给super().__init__两次。

示例代码如下:
r = Rectangle(5, 4)r.area()   # 20s = Square(3)s.area()   # 9





07

 Level 6: 使用Dataclasses


什么?你说在定义类的时候经常忘记写函数__init__,此时我们不妨来使用dataclass。

样例如下:
from dataclasses import dataclass@dataclassclass Dog:    name: str    age: int    def bark(self):        print(f"woof name={self.name} age={self.age}")dog = Dog("rocky", 4)dog.bark()   # woof name=rocky age=4
是不是敲方便?




08


总结


本文重点介绍了在Python中创建类的六重境界,并给出了相应的代码示例。

 

您学废了嘛?





点击上方小卡片关注我



万水千山总关情,点个在看行不行。

【声明】内容源于网络
0
0
AI算法之道
一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
内容 573
粉丝 0
AI算法之道 一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
总阅读23
粉丝0
内容573