Python 类与对象

简介: Python基础入门类与对象。类,对象,实例化,属性,方法。继承,多态,方法重写,私有,封装。

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。

🥭本文内容:Python 类与对象

@[TOC]


1.类与对象

Python 是一种面向对象的编程语言。
Python 中的几乎所有东西都是对象,拥有属性和方法。
类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。

在现实生活中,类是所有同种物体的统称,如:人类、鸟类等。

而对象则是一个类中的具体的一个个体,如:人类小明是人类的具体个体。

1.1 类的定义

在Python中,定义一个类的格式如下:

class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>

通常类中还包含一个初始化函数,帮助我们初始化对象的属性:

class ClassName:
    def __init__(self, ···):
        ···
    ···
    ···
    ···

让我们定义一个学生类,并实例化出一个对象:

class Student:
    # self 代表类的当前实例
    def __init__(self, name, age, ID):
        self.name = name
        self.age = age
        self.ID = ID
stu1 = Student('小嗷犬', 18, '666') # 实例化

这样我们就可以通过类打印出stu1的各个属性:

class Student:
    def __init__(self, name, age, ID):
        self.name = name
        self.age = age
        self.ID = ID
stu1 = Student('小嗷犬', 18, '666')
print(stu1.name, stu1.age, stu1.ID)

1.2 类的方法

这种打印方法也可以写在类里:

class Student:
    def __init__(self, name, age, ID):
        self.name = name
        self.age = age
        self.ID = ID
    def introduce(self):
        print(f'我叫{self.name},今年{self.age}岁,学号是{self.ID}')
stu1 = Student('小嗷犬', 18, '666')
stu1.introduce()

2.继承

2.1 单继承

Python 支持类的继承,派生类的定义如下所示:

class DerivedClassName(BaseClassName):
    <statement-1>
    .
    .
    .
    <statement-N>

子类(派生类 DerivedClassName)会继承父类(基类 BaseClassName)的属性和方法。

下面我们用学生类来派生一个大学生类:
```python
class Student:
def init(self, name, age, ID):
self.name = name
self.age = age
self.ID = ID
def introduce(self):
print(f'我叫{self.name},今年{self.age}岁,学号是{self.ID}')

class BigStudent(Student):
def eat(self):
print('我是大学生,我会吃大米饭。')

stu1 = BigStudent('小嗷犬', 18, '666')
stu1.introduce()
stu1.eat()

---
## 2.2 多继承
>除此之外,Python还支持多继承,多继承的类定义形如下:
```python
class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    .
    <statement-N>

>需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,Python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法。

2.3 方法重写

在派生类继承了父类方法后,可以对原有方法进行重写:
```python
class Student:
def init(self, name, age, ID):
self.name = name
self.age = age
self.ID = ID
def introduce(self):
print(f'我叫{self.name},今年{self.age}岁,学号是{self.ID}')

class BigStudent(Student):
def introduce(self):
super().introduce()
print('我已经是个大学生了。')

def eat(self):
    print('我是大学生,我会吃大米饭。')

stu1 = BigStudent('小嗷犬', 18, '666')
stu1.introduce()
stu1.eat()

>上例的大学生类重写了学生类的``introduce``函数,其中用super()来调用父类函数。
---
# 3.私有属性与方法
>Python中可以将属性或方法设为私有,使其只能在类的内部访问,语法格式为在属性或方法名前加两个下划线:
```python
__private_attrs # 私有属性
__private_method # 私有方法

代码实例:

class Student:
    __name = None
    __age = None
    __ID = None

    def __init__(self, name, age, ID):
        self.__name = name
        self.__age = age
        self.__ID = ID

    def getName(self):
        return self.__name

    def getAge(self):
        return self.__age

    def getID(self):
        return self.__ID
stu1 = Student('小嗷犬', 18, '666')
print(stu1.getName(), stu1.getAge(), stu1.getID())

直接访问私有属性将会报错:
```python
class Student:
name = None age = None
__ID = None

def __init__(self, name, age, ID):
    self.__name = name
    self.__age = age
    self.__ID = ID

def getName(self):
    return self.__name

def getAge(self):
    return self.__age

def getID(self):
    return self.__ID

stu1 = Student('小嗷犬', 18, '666')
print(stu1.__name)
```

目录
相关文章
|
26天前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
118 3
|
1月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
66 0
|
5月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
242 15
|
5月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
183 5
|
5月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
113 11
|
8月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
325 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
6月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
102 1
|
9月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
183 2
|
9月前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
200 3
|
9月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。

热门文章

最新文章

推荐镜像

更多