首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

10 Python面向对象编程:类和对象以及和Java的对比

编程知识
2024年09月03日 09:12

本篇是 Python 系列教程第 10 篇,更多内容敬请访问我的 Python 合集

这里只介绍类和对象,self、属性、方法、访问控制、类继承、方法重写在后面的文章里介绍

在Python中,类和对象是面向对象编程的基础。

1 类的概念

类是一种创建对象的蓝图或模板。它定义了一组属性(变量)和方法(函数),这些属性和方法描述了该类的对象应该具有哪些特征和行为。

2 定义一个类

在Python中,你可以使用class关键字来定义一个类。例如,定义一个名为Person的简单类:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def display(self):
        print(f"Name: {self.name}, Age: {self.age}")
  • __init__方法是一个特殊的方法,称为构造器,用于初始化类的新实例。
  • self参数代表类的实例本身,并且是类任何方法的第一个参数。
  • 类方法需要通过self来访问类属性。

3 创建对象

创建一个类的实例(即对象)非常简单。只需调用类名后跟一对括号即可:

person1 = Person("Alice", 25)
person2 = Person("Bob", 30)

4 访问属性和方法

可以通过点符号访问对象的属性和方法:

person1.display()  
# 输出: Name: Alice, Age: 25
print(f"Name: {person2.name}, Age: {person2.age}")  
# 输出: Name: Bob, Age: 30

Python 还有一个很牛逼的操作就是可以直接给对象赋值类里不存在的属性,比如我给 person2 的一个不存在的属性 gender 赋值:

person2.gender = "男"
print(getattr(person2,"gender"))
# 输出:男

5 和Java类的对比

5.1 类和文件

在 Python 中,一个文件可以包含多个类。我们新建一个 example.py 文件,里面创建两个类,并在 main.py 文件中使用它们。

example.py

class MyClass1:
    def __init__(self, value):
        self.value = value
        
    def display(self):
        print("MyClass1 Value is:", self.value)

class MyClass2:
    def __init__(self, value):
        self.value = value
        
    def display(self):
        print("MyClass2 Value is:", self.value)

你可以在另一个文件中导入并使用这些类:

main.py

from example import MyClass1, MyClass2

# 创建MyClass1的实例
instance1 = MyClass1("AAA")
instance1.display()
# 输出:MyClass1 Value is: AAA

# 创建MyClass2的实例
instance2 = MyClass2("BBB")
instance2.display()
# 输出:MyClass2 Value is: BBB

Java 一个文件也可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。这是编译器的基本要求。虽然可以有非 public 的类,但是在外部无法使用,只能在本文件的类里使用。

5.2 构造函数

Python 构造函数第一个参数是 self 代表类的实例本身,并且 self 是类任何方法的第一个参数。构造函数里用 self.xx = xx 赋值过的参数就是类的属性,不用像 Java 一样先声明属性。

From:https://www.cnblogs.com/GilbertDu/p/18394028
本文地址: http://shuzixingkong.net/article/1688
0评论
提交 加载更多评论
其他文章 keycloak~scope客户端模板的使用
scope为何物? scope在oauth2中表示授权的范围,另外也可以理解为,根据认证时scope的参数,在构建jwt时,返回更多的信息;比如在keycloak中,你的可选scope(optional scope)中添加了address这个模板,当你通过/auth/realms/{realmId}
keycloak~scope客户端模板的使用 keycloak~scope客户端模板的使用 keycloak~scope客户端模板的使用
PlugIR:开源还不用微调,首尔大学提出即插即用的多轮对话图文检索 | ACL 2024
即插即用的PlugIR通过LLM提问者和用户之间的对话逐步改进文本查询以进行图像检索,然后利用LLM将对话转换为检索模型更易理解的格式(一句话)。首先,通过重新构造对话形式上下文消除了在现有视觉对话数据上微调检索模型的必要性,从而使任意黑盒模型都可以使用。其次,构建了LLM问答者根据当前情境中检索候
PlugIR:开源还不用微调,首尔大学提出即插即用的多轮对话图文检索 | ACL 2024 PlugIR:开源还不用微调,首尔大学提出即插即用的多轮对话图文检索 | ACL 2024 PlugIR:开源还不用微调,首尔大学提出即插即用的多轮对话图文检索 | ACL 2024
【VMware VCF】VCF 5.2:配置管理域 vSAN 延伸集群。
VMware vSAN 解决方案中,根据集群的配置类型分为 vSAN 标准集群、vSAN 延伸集群以及双主机集群(延伸集群特例)。我们最常见的使用方式应该是 vSAN 标准集群,也就是 vSAN HCI 超融合集群,至少由 3 台 ESXi 主机所组成,这些 ESXi 主机安装位属于同一个数据中内,
【VMware VCF】VCF 5.2:配置管理域 vSAN 延伸集群。 【VMware VCF】VCF 5.2:配置管理域 vSAN 延伸集群。 【VMware VCF】VCF 5.2:配置管理域 vSAN 延伸集群。
解决auditwheel repair过程rpath被修改的问题
在开源Python项目中,如果使用到了Cython或者CUDA C++等需要编译的后端技术,那么要传到pypi上就需要经过一个PEP标准的审查。要通过审查,就要经过多个版本的Python的构建,以及auditwheel修复的过程。本文解决了一个auditwheel修复过程中有可能出现的rpath路径
.NET 最好用的验证组件 FluentValidation
前言 一个 .NET 验证框架,支持链式操作,易于理解,功能完善,组件内提供十几种常用验证器,可扩展性好,支持自定义验证器,支持本地化多语言。 项目介绍 FluentValidation 是一个开源的 .NET 库,用于验证对象的属性。 它提供了一种简单而强大的方式来定义和执行验证规则,使验证逻辑的
.NET 最好用的验证组件 FluentValidation .NET 最好用的验证组件 FluentValidation .NET 最好用的验证组件 FluentValidation
OpenFeign深入学习笔记
OpenFeign 是 Spring Cloud 生态系统中的一个强大工具,它使得微服务之间的通信变得更加简单和高效。通过使用 OpenFeign,开发者可以专注于业务逻辑的实现,而不需要关心底层的 HTTP 通信细节。
地理围栏,打造智能生活新边界
随着智能手机和其他移动设备的普及,用户对基于位置获取个性化服务的需求大幅增加,例如用户进入商圈范围并停留操作一段时间后,智能触发向用户推送该商圈吃、喝、玩、乐的优惠活动消息;又如当用户到达非常驻地的机场时触发围栏,向用户推送询问是否需要预定机场附近的酒店的消息,从而第一时间洞悉用户潜在需求并提供相关
地理围栏,打造智能生活新边界 地理围栏,打造智能生活新边界
Go语言中的交互式CLI开发:survey库简介
在构建命令行工具时,良好的用户交互体验至关重要。尤其是在需要与用户进行复杂输入的场景下,传统的命令行参数和标志可能显得笨拙。github.com/AlecAivazis/survey/v2 是一个为 Go 语言设计的库,专门用于构建交互式的命令行界面。它提供了多种用户输入方式,让你的 CLI 工具变
Go语言中的交互式CLI开发:survey库简介