首页 > 编程语言 >10 Python面向对象编程:类和对象以及和Java的对比

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

时间:2024-09-03 10:19:03浏览次数:14  
标签:__ 10 Java Python self MyClass2 value 面向对象编程 属性

本篇是 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 一样先声明属性。

标签:__,10,Java,Python,self,MyClass2,value,面向对象编程,属性
From: https://www.cnblogs.com/GilbertDu/p/18394028

相关文章

  • 11 Python面向对象编程:三大特性,封装、继承、多态
    本篇是Python系列教程第11篇,更多内容敬请访问我的Python合集1封装封装就是把类的公有属性改成私有属性,并且提供对外访问的方法。示例classMyClass:def__init__(self,value):self.__value=valuedefget_value(self):returnself.__......
  • P9108 [PA2020] Malowanie płotu
    题意:给定\(n,m\),一个区间序列\(\{[L_1,R_1],[L_2,R_2],\cdots,[L_n,R_n]\}\)被称为好的当且仅当:\(\foralli\in[1,n],1\leL_i\leR_i\lem\)。\(\foralli\in[1,n-1],[L_i,R_i]\cup[L_{i+1},R_{i+1}]\ne\emptyset\)。输出好的序列个数对给定质数\(p\)......
  • 10年网安经验分享:一般人别瞎入网络安全行业
    小白入门网络安全,如何选择方向?如果你是一个新手小白,那么在最开始方向选择上面这一步是至关重要的,一旦你选错了那很可能就要和安全“saygoodbye”了。很多小白刚开始的时候还没开始学会走就想着飞了,计算机功底都没学好就说要去渗透一个网站,要去学逆向破解一个APP,结果折腾了......
  • 在Java中23种设计模式,分类以及代码示例
    在Java中23种设计模式,分类以及代码示例在Java中,设计模式可以分为23种,以三个不同的分类进行划分。1.创建型模式(CreationalPatterns):单例模式(Singleton)原型模式(Prototype)工厂方法模式(FactoryMethod)抽象工厂模式(AbstractFactory)建造者模式(Builder)2.结构型模式(Structura......
  • Java+Vue开发的智慧园区综合管理系统(项目源码分享)
    前言:智慧园区管理系统是一个集成了多种功能的综合性系统,旨在通过信息化、智能化手段提升园区的管理效率和服务质量。以下是针对系统的各个功能模块的简要描述:一、楼栋管理会务管理:管理园区内的会议预约、会议室使用等。园区信息:展示园区的基本信息,如位置、面积、规划等。楼......
  • Java+Vue开发的固定资产管理系统(项目源码分享)
    前言:资产设备管理系统旨在实现对企业资产和设备的全面管理,通过信息化手段提升管理效率,确保资产和设备的有效利用和安全性。以下是该系统的主要功能模块及其详细描述:一、个人中心用户登录与权限管理:实现用户身份验证和权限分配,确保系统数据的安全性。个人信息管理:允许用户查......
  • Java+Vue开发的企事业移动培训考试平台(项目源码分享)
    前言:企事业移动培训考试系统是一个集成多种功能的综合性平台,旨在为企业提供便捷、高效、灵活的在线培训和考试解决方案。以下是针对平台所列出的八个主要功能的详细解释:一、文档管理及在线预览允许企业上传、存储、管理和分享各种培训文档,如PPT、PDF、Word等。提供在线预览......
  • 「代码随想录算法训练营」第五十二天 | 图论 part10
    目录Floyd算法题目:97.小明逛公园A*算法题目:126.骑士的攻击最短路算法总结Floyd算法Floyd算法用于求解多源最短路问题(求多个起点到多个终点的多条最短路径)。在前面学习的dijkstra算法、Bellman算法都是求解单源最短路的问题(即只能有一个起点)。注意:Floyd算法对边的权值正负没......
  • 基于java+springboot+vue人事人力资源管理系统求职简历系统(源码+LW+部署讲解)
    前言......
  • 基于java+springboot+vue人口老龄化常态下的社区老人管理系统(源码+LW+部署讲解)
    前言......