• Python中创建类的六重境界


    1. 引言

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

    2. Level 1: Basic class

    在Python中,类通过 class 关键字定义,最简单的创建类的代码样例如下:

    class Dog:
        pass
    dog = Dog()   # initializing
    
    • 1
    • 2
    • 3

    3. Level 2: Basic class with basic method

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

    class Dog:
        def bark(self):
            print("woof")
    dog = Dog()
    dog.bark()   # woof
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4. Level 3: Basic class with init method

    接着让我们在类内添加一个__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=4
    dog2 = Dog("lucky", 5)   # name="lucky" age=5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5. Level 4: Class that inherits from another class

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

    样例代码如下:

    class Animal:
        def speak(self):
            print("hello")
    class Dog(Animal):
        pass
    dog = Dog()
    dog.speak()   # hello
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6. Level 5: Class that inherits from another class with 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.width
    class Square(Rectangle):
        def __init__(self, length):
            super().__init__(length, length)   # Rectangle's __init__
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    r = Rectangle(5, 4)
    r.area()   # 20
    s = Square(3)
    s.area()   # 9
    
    • 1
    • 2
    • 3
    • 4

    7. Level 6: Dataclasses

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

    from dataclasses import dataclass
    @dataclass
    class 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    是不是敲方便?

    8. 总结

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

    您学废了嘛?

  • 相关阅读:
    VESTA软件下载
    Unity⭐️Win和Mac安卓打包环境配置
    零碎改动(ES6+)
    【优化选址】基于matlab遗传算法求解物流配送中心选址【含Matlab源码 1917期】
    代码优化个人经验总结(以代码解耦模块化 减少代码量为目标 提高可维护性降低bug率)
    SoC-ZCU106求解非线性方程(一):环境安装
    搜索效率提升200%的高级指令及其使用技巧(百度篇)
    边缘计算技术
    【Linux】gcc的使用
    半量化交易(一)
  • 原文地址:https://blog.csdn.net/sgzqc/article/details/128050771