当前位置: 首页 > news >正文

Python 面向对象编程基础:类与对象初体验

面向对象编程(OOP)是一种编程范式,它通过对象和类的概念来组织代码,使程序更加模块化、可维护和可扩展。Python 是一种支持面向对象编程的语言,提供了强大的类和对象机制。今天,就让我们一起学习 Python 中的面向对象编程基础,从类和对象的定义到基本用法,开启你的 OOP 之旅。

一、类(Class)与对象(Object)

(一)什么是类?

类是一种抽象的数据类型,它定义了一组具有相同属性和方法的对象的结构。类可以看作是一个模板,用于创建对象。

(二)什么是对象?

对象是类的实例,它是类的具体实现。每个对象都有自己的属性和方法,这些属性和方法由类定义。

二、定义类

在 Python 中,使用 class 关键字定义类。

(一)定义一个简单的类

class Person:def __init__(self, name, age):self.name = nameself.age = agedef greet(self):print(f"Hello, my name is {self.name} and I am {self.age} years old.")

(二)解释

  • __init__ 方法:这是一个特殊的方法,称为构造函数。它在创建对象时自动调用,用于初始化对象的属性。
  • self 参数self 是一个指向当前对象的引用,用于访问对象的属性和方法。

三、创建对象

通过类创建对象的过程称为实例化。

(一)创建对象

# 创建一个 Person 类的实例
person1 = Person("Alice", 25)
person2 = Person("Bob", 30)# 调用对象的方法
person1.greet()  # 输出 "Hello, my name is Alice and I am 25 years old."
person2.greet()  # 输出 "Hello, my name is Bob and I am 30 years old."

(二)访问对象的属性

print(person1.name)  # 输出 "Alice"
print(person2.age)   # 输出 30

四、类属性与实例属性

(一)类属性

类属性是属于类的属性,所有实例共享。

class Person:species = "Homo sapiens"  # 类属性def __init__(self, name, age):self.name = nameself.age = agedef greet(self):print(f"Hello, my name is {self.name} and I am {self.age} years old.")# 访问类属性
print(Person.species)  # 输出 "Homo sapiens"# 创建实例
person1 = Person("Alice", 25)
print(person1.species)  # 输出 "Homo sapiens"

(二)实例属性

实例属性是属于每个实例的属性,每个实例都有自己的独立副本。

person1.name = "Alice Smith"
print(person1.name)  # 输出 "Alice Smith"

五、方法

(一)实例方法

实例方法是类中定义的普通方法,第一个参数总是 self,用于访问实例的属性和方法OpenSpeedy。

class Person:def __init__(self, name, age):self.name = nameself.age = agedef greet(self):print(f"Hello, my name is {self.name} and I am {self.age} years old.")

(二)类方法

类方法的第一个参数是类本身,通常命名为 cls。类方法可以通过类名或实例调用。

class Person:count = 0  # 类属性def __init__(self, name, age):self.name = nameself.age = agePerson.count += 1@classmethoddef get_count(cls):return cls.countprint(Person.get_count())  # 输出 0
person1 = Person("Alice", 25)
print(Person.get_count())  # 输出 1

(三)静态方法

静态方法不接收 selfcls 参数,它们就像普通函数一样,但属于类的命名空间。

class Person:def __init__(self, name, age):self.name = nameself.age = age@staticmethoddef is_adult(age):return age >= 18print(Person.is_adult(25))  # 输出 True

六、继承

继承是面向对象编程中的一个重要概念,它允许一个类继承另一个类的属性和方法ScribeHow。

(一)定义父类和子类

class Animal:def __init__(self, name):self.name = namedef speak(self):passclass Dog(Animal):def speak(self):return f"{self.name} says Woof!"class Cat(Animal):def speak(self):return f"{self.name} says Meow!"

(二)使用继承

dog = Dog("Buddy")
cat = Cat("Whiskers")print(dog.speak())  # 输出 "Buddy says Woof!"
print(cat.speak())  # 输出 "Whiskers says Meow!"

七、多态

多态允许不同的类具有相同名称的方法,但具体实现不同。

def animal_speak(animal):print(animal.speak())animal_speak(dog)  # 输出 "Buddy says Woof!"
animal_speak(cat)  # 输出 "Whiskers says Meow!"

八、封装

封装是将对象的属性和方法封装在一起,隐藏内部实现细节,只暴露必要的接口KMSCX激活。

class Person:def __init__(self, name, age):self._name = name  # 使用单下划线表示受保护的属性self.__age = age   # 使用双下划线表示私有属性def get_age(self):return self.__agedef set_age(self, age):if age > 0:self.__age = ageperson = Person("Alice", 25)
print(person.get_age())  # 输出 25
person.set_age(30)
print(person.get_age())  # 输出 30

九、总结

通过本文的介绍,你已经掌握了 Python 中面向对象编程的基础知识,包括类和对象的定义、属性和方法的使用、继承、多态和封装。以下是关键点总结:

  • :定义了一组具有相同属性和方法的对象的结构。
  • 对象:类的实例,具有自己的属性和方法。
  • 类属性:属于类的属性,所有实例共享。
  • 实例属性:属于每个实例的属性,每个实例都有自己的独立副本。
  • 实例方法:类中定义的普通方法,第一个参数是 self
  • 类方法:第一个参数是类本身,通常命名为 cls
  • 静态方法:不接收 selfcls 参数,属于类的命名空间。
  • 继承:一个类可以继承另一个类的属性和方法。
  • 多态:不同的类可以具有相同名称的方法,但具体实现不同。
  • 封装:将对象的属性和方法封装在一起,隐藏内部实现细节。
http://www.hskmm.com/?act=detail&tid=20792

相关文章:

  • 面向对象的设计原则
  • 反电动势法控制BLDC电机的原理图分析
  • 完整教程:Altium Designer(AD)设计规则检查设置
  • 企业物联网安全必须优先考虑的5个不可否认的理由
  • PSM敏捷认证自考学习指南
  • 2025内网聊天工具排行 4款好用的内网聊天软件推荐
  • 独立开发在线客服系统手记:实现对 PostgreSQL 的支持,以及与 MySQL 的对比
  • 方言普通话识别大模型,支撑中英+202种方言识别
  • ffmpeg一些使用记录,防止忘记
  • BLE从机(20)BLE区分主机(IOS/安卓/WIN)
  • Windows 驱动开发基础
  • 基于MATLAB实现基于距离的离群点检测算法
  • 国产DevOps工具链的突围之路:Gitee如何重塑企业研发效能
  • 阿里云抵御CC攻击利器边缘安全加速ESA
  • 生产者-消费者问题
  • Manim实现闪电特效
  • QAction的使用
  • Gitee:中国开发者生态的数字化转型加速器
  • 大模型提示词技巧Prompt Engineering,看这一篇就够了 - 知乎
  • sg.测试 PySimpleGUI 取值方法
  • Gitee DevOps:本土化基因驱动中国企业研发效能革命
  • 快速查看Navicat数据库连接密码实战
  • 老旧系统接入统一认证
  • 每周读书与学习-初识JMeter 元件(三)
  • Playwright MCP浏览器自动化全攻略
  • 【IEEE出版、连续3届稳定EI检索】第四届能源互联网及电力系统国际学术会议(ICEIPS 2025)
  • 大内容 Python动漫信息管理系统 Django+Echarts 类型饼图 折线图分析 后台管理 智能推荐(源码)✅
  • 划分子网与连通性
  • Python 之创建虚拟目录
  • 深入解析:从“硬件能力比拼”到“生活价值交付”,方太智慧厨房重构行业竞争内核