基于python3 类的属性、方法、封装、继承实例讲解

基于Python3 类的属性、方法、封装、继承实例讲解

1. 属性

属性是类的成员变量,用于存储对象的数据。在Python中,属性可以分为类属性和实例属性。

1.1 类属性

类属性是被该类的所有实例共享的变量。可以通过类名或实例进行访问和修改。

class MyClass:
    class_attr = 10  # 类属性

# 访问类属性
print(MyClass.class_attr)  # 输出 10

# 修改类属性
MyClass.class_attr = 20
print(MyClass.class_attr)  # 输出 20

# 通过实例访问类属性
my_instance = MyClass()
print(my_instance.class_attr)  # 输出 20

1.2 实例属性

实例属性是每个实例对象独有的变量。可以通过实例对象进行访问和修改。

class MyClass:
    def __init__(self):
        self.instance_attr = 10  # 实例属性

# 访问实例属性
my_instance = MyClass()
print(my_instance.instance_attr)  # 输出 10

# 修改实例属性
my_instance.instance_attr = 20
print(my_instance.instance_attr)  # 输出 20

2. 方法

方法是类中定义的函数,用于操作对象和执行特定的功能。在Python中,方法分为实例方法、类方法和静态方法。

2.1 实例方法

实例方法作用于类的实例对象,并且可以访问实例属性和调用其他实例方法。

class MyClass:
    def instance_method(self):
        print("这是一个实例方法")

# 创建实例对象
my_instance = MyClass()

# 调用实例方法
my_instance.instance_method()  # 输出 "这是一个实例方法"

2.2 类方法

类方法是绑定到类而不是实例的方法,可以通过类名或实例进行调用。类方法可以访问类属性但不能访问实例属性。

class MyClass:
    class_attr = 10  # 类属性

    @classmethod
    def class_method(cls):
        print("这是一个类方法")
        print("类属性值:", cls.class_attr)

# 调用类方法
MyClass.class_method()  # 输出 "这是一个类方法" 和 "类属性值: 10"

# 通过实例调用类方法
my_instance = MyClass()
my_instance.class_method()  # 输出 "这是一个类方法" 和 "类属性值: 10"

2.3 静态方法

静态方法是与类无关的方法,可以通过类名或实例进行调用。静态方法既不能访问类属性,也不能访问实例属性。

class MyClass:
    @staticmethod
    def static_method():
        print("这是一个静态方法")

# 调用静态方法
MyClass.static_method()  # 输出 "这是一个静态方法"

# 通过实例调用静态方法
my_instance = MyClass()
my_instance.static_method()  # 输出 "这是一个静态方法"

3. 封装

封装是指将数据和行为封装在一个类中,通过定义访问权限来控制对类的成员的访问。在Python中,可以使用属性装饰器(@property@属性名.setter)来实现封装。

class MyClass:
    def __init__(self):
        self._private_attr = 10  # 私有属性

    @property
    def private_attr(self):
        return self._private_attr

    @private_attr.setter
    def private_attr(self, value):
        if value >= 0:
            self._private_attr = value

# 创建实例对象
my_instance = MyClass()

# 访问私有属性
print(my_instance.private_attr)  # 输出 10

# 修改私有属性
my_instance.private_attr = 20
print(my_instance.private_attr)  # 输出 20

# 尝试修改私有属性为负值,不会生效
my_instance.private_attr = -10
print(my_instance.private_attr)  # 输出 20

4. 继承

继承是指一个类从另一个类继承属性和方法,从而扩展或修改父类的功能。在Python中,使用class 子类名(父类名)来实现继承。

class ParentClass:
    def parent_method(self):
        print("这是父类的方法")

class ChildClass(ParentClass):
    def child_method(self):
        print("这是子类的方法")

# 创建子类实例
my_instance = ChildClass()

# 调用子类方法
my_instance.child_method()  # 输出 "这是子类的方法"

# 子类可以调用父类的方法
my_instance.parent_method()  # 输出 "这是父类的方法"

以上是基于Python3的类属性、方法、封装、继承的完整攻略。通过以上示例,你可以更好地理解和使用类相关的概念和特性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于python3 类的属性、方法、封装、继承实例讲解 - Python技术站

(0)
上一篇 2023年6月28日
下一篇 2023年6月28日

相关文章

  • Idea为java程序添加启动参数(含:VM options、Program arguments、Environment variable)

    添加启动参数可以帮助我们更好地控制Java应用程序的行为和配置。在IntelliJ IDEA中,我们可以通过以下三种方式添加启动参数: 添加VM options VM options是Java虚拟机的参数,我们可以通过这种方式来修改虚拟机的配置。在IntelliJ IDEA中,我们可以如下步骤添加VM options: 打开Project Structure…

    other 2023年6月27日
    00
  • Spring Boot解决项目启动时初始化资源的方法

    使用Spring Boot时,我们可能需要在项目启动时初始化一些资源,例如数据库连接池、缓存等。这些资源的初始化需要在应用程序启动时执行,并在应用程序关闭时销毁。 在Spring Boot中,我们可以使用以下三种方法来实现这一目标: 实现InitializingBean和DisposableBean接口 Spring提供了InitializingBean和D…

    other 2023年6月20日
    00
  • asp.net三种方法实现事务

    ASP.NET 三种方法实现事务 在实际开发中,数据操作中涉及到事务的场景比较多。基于事务的操作可以保证数据的一致性和完整性,即使在多个操作之间发生异常或者错误,也能保证数据的正确性。在 ASP.NET 中,我们可以使用三种方法来实现事务,分别是使用 SqlTransaction、使用 TransactionScope、使用 Enterprise Servi…

    其他 2023年3月28日
    00
  • 使用logback屏蔽一些包的日志

    以下是使用logback屏蔽一些包的日志的完整攻略: 首先,在项目的classpath下创建logback.xml文件,用于配置logback的日志输出规则。 在logback.xml文件中,使用<logger>标签配置需要屏蔽日志的包名,并设置其日志级别为OFF。 示例1:屏蔽com.example.package包的日志 xml <lo…

    other 2023年10月14日
    00
  • mysqlin排序

    以下是“MySQL中排序”的完整攻略: MySQL中排序 在MySQL中,您可以使用ORDER BY子句对查询结果进行排序。本攻略将介绍如何使用ORDER BY子句对查询结果进行排序。 步骤1:使用ORDER BY子句 ORDER BY子句用于对结果进行排序。以下是ORDER BY子句的语法: SELECT column1, column2, … FRO…

    other 2023年5月7日
    00
  • Androd 勇闯高阶性能优化之布局优化篇

    Android 勇闯高阶性能优化之布局优化篇攻略 1. 优化布局层次结构 在 Android 应用中,布局层次结构的复杂度会直接影响应用的性能。通过优化布局层次结构,可以提高应用的渲染速度和响应性能。 示例说明 1: 使用 <merge> 标签 当布局文件中的根布局只包含一个子视图时,可以使用 <merge> 标签来减少布局层次结构的…

    other 2023年8月21日
    00
  • MySQL中LIKE子句相关使用的学习教程

    MySQL中LIKE子句相关使用的学习教程 简介 在MySQL中,LIKE子句用于在查询中模糊匹配字符串。它可以帮助我们查找包含特定模式的数据。本教程将详细介绍MySQL中LIKE子句的使用方法,并提供两个示例说明。 语法 LIKE子句的基本语法如下: SELECT 列名 FROM 表名 WHERE 列名 LIKE ‘模式’; 示例1:查找以特定字符开头的数…

    other 2023年8月18日
    00
  • Cmd使用方式–命令行运行程序

    Cmd是Windows操作系统中的命令行工具,可以通过它来运行程序、管理文件、配置系统等。以下是“Cmd使用方式–命令行运行程序”的完整攻略: 命令行运行程序的基本语法 在Cmd中,可以使用以下语法来运行程序: 程序路径 [参数1] [参数2] … 其中,程序路径是要运行的程序的路径,参数1、参数2等是程序的参数。例如,要运行一个名为hello.exe…

    other 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部