一文秒懂Python面向对象

目录

一、概念和基本属性

二、初始化函数

三、魔法函数

四、构造函数(构造器)与析构函数(类似行为)

构造函数(构造器)__init__

析构函数(类似行为)__del__

五、三大特性:封装、继承、多态

封装

继承

多态

六、抽象类

七、类中的内容以及向类中动态添加内容

1.实例属性

2.实例方法

3.类属性

4.类方法

5.静态方法

八、数据的访问级别

九、属性的封装与操作

十、单例类


一、概念和基本属性

Python面向对象编程(简称OOP)是Python语言中最重要的特性之一。它通过将数据和操作数据的方法封装在对象中,使得程序更加模块化、可重用和易于维护。它遵循一切皆对象的理念,可以将现实世界的事物使用类与实例进行模拟。下面我们来说一说什么是类,什么是实例?

类:类是一个用于创建对象的模板,它约定了对象应该具有的属性和方法。属性是对象的特征(如数据),而方法是对象可以执行的操作(如函数)。类是一个抽象的概念,它本身不表示任何具体的数据,但它可以被用来创建表示具体数据的对象。在Python中,你可以使用class关键字来定义一个类。类的定义通常包括:

  • 类名:类的唯一标识符
  • 初始化方法__init__):一个特殊的方法,用于在创建对象时初始化对象的属性。
  • 其他方法:定义在类中的函数,用于执行与对象相关的操作。

实例:实例是类的具体实现,或者说是根据类创建的对象。每个实例都拥有类中定义的属性和方法,但它们可以有不同的属性值。换句话说,实例是类的具体实例化结果,它代表了具体的数据和与之相关的操作。在Python中,你可以通过类名后跟一对圆括号(可能包含初始化参数)来创建类的实例。在创建实例时,Python会自动调用类的__init__方法来初始化对象的属性。

下面是代码示例:

# 自定义一个类
class MyClass:
    pass


# 声明一个MyClass类的实例
mc1 = MyClass()

二、初始化函数

在Python中,初始化函数是一个特殊的方法,用于在创建类的新实例时设置或初始化对象的属性。这个方法通常被称为__init__方法(双下划线init,后跟双下划线)。__init__方法是类的构造器,它在创建类的新实例时自动调用。

__init__ 方法的基本用法:

  1. 定义:在类定义中,__init__ 方法被定义为一个方法,但它不接受self以外的任何参数,除非这些参数是你希望在创建对象时指定的。

  2. self 参数__init__ 方法必须包含一个名为 self 的参数。在类的方法中,self 代表类的实例本身。通过这个参数,你可以访问类中的属性和其他方法。

  3. 初始化属性:在 __init__ 方法内部,你可以设置对象的属性。这通常通过 self.属性名 = 值 的形式来完成。

下面是代码示例:

class Person:

    def __init__(self, name, age):
        self.name = name  # 初始化name属性
        self.age = age  # 初始化age属性

    def greet(self):
        print(f"name:{self.name},age:{self.age}")


# 创建Person类的实例
person1 = Person("小明", 18)

# 调用实例的方法
person1.greet()  # 输出: name:小明,age:18

在这个示例中,Person 类有一个 __init__ 方法,它接受三个参数:selfname 和 ageself 参数是对新创建的 Person 实例的引用,而 name 和 age 是传递给 __init__ 方法的参数,用于初始化对象的属性。

当 Person("小明", 18) 被执行时,Python 创建了一个 Person 类的实例,并自动调用 __init__ 方法,将 "小明" 和 18作为参数传递给它。然后,__init__ 方法将这些值分别赋给新实例的 name 和 age 属性。

三、魔法函数

Python中的魔法函数(又称为特殊方法或双下划线方法)是Python类定义中可以重写的特殊方法。这些方法总是以双下划线开始和结束,例如__init____str____add__等。这些方法提供了对象的内置行为,如初始化、字符串表示、算术运算等。当特定的操作被应用到类的实例时,Python解释器会自动调用这些方法。下面是一些常用的魔法函数及其用途的简要介绍:

  1. __init__(self, ...):类的初始化方法。当创建类的新实例时,会自动调用此方法。它通常用于设置对象的初始状态或属性。

  2. __str__(self):定义对象的字符串表示形式。当对对象使用str()函数或者print()函数打印对象时,会自动调用此方法。

  3. __repr__(self):定义对象的“官方”字符串表示形式,并应尽可能提供足够的信息,以便能够通过eval()函数重新创建对象。在交互式环境中,如果__str__没有被定义,则会使用__repr__的输出。

  4. __add__(self, other):定义加法运算符(+)的行为。

  5. __sub__(self, other):定义减法运算符(-)的行为。

  6. __mul__(self, other):定义乘法运算符(*)的行为。

  7. __truediv__(self, other):定义真除法运算符(/)的行为(Python 3)。

  8. __floordiv__(self, other):定义地板除运算符(//)的行为。

  9. __mod__(self, other):定义取模运算符(%)的行为。

  10. __pow__(self, power, modulo=None):定义幂运算符(**)的行为,以及可选的模幂运算(pow(x, y, z))。

  11. __eq__(self, other):定义等于运算符(==)的行为。

  12. __ne__(self, other):定义不等于运算符(!=)的行为。

  13. __lt__(self, other):定义小于运算符(<)的行为。

  14. __le__(self, other):定义小于等于运算符(<=)的行为。

  15. __gt__(self, other):定义大于运算符(>)的行为。

  16. __ge__(self, other):定义大于等于运算符(>=)的行为。

  17. __getitem__(self, key):定义获取容器中指定元素的行为(如使用obj[key])。

  18. __setitem__(self, key, value):定义设置容器中指定元素的值的行为(如使用obj[key] = value)。

  19. __delitem__(self, key):定义删除容器中指定元素的行为(如使用del obj[key])。

  20. __iter__(self):定义容器迭代的行为。

  21. __next__(self):与迭代器协议相关,定义迭代器对象的next()方法的行为。

下面是代码示例:

class MyClass:
    def __init__(self, name, age):
        print(f"初始化函数执行了")
        self.name = name
        self.age = age

    def __str__(self):
        return f"醒醒啦:{self.name}"

    def __len__(self):
        return len(self.name)

    def __gt__(self, other):
        return self.age > other.age

    def __lt__(self, other):
        return self.age < other.age

    def __ge__(self, other):
        return self.age >= other.age

    def __le__(self, other):
        return self.age <= other.a

你可能感兴趣的:(python,开发语言)