Python 从入门到实战22(类的定义、使用)

news/2024/9/20 14:24:40 标签: python, 开发语言

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

上篇文章我们讨论了面向对象简单介绍相关知识。今天我们将学习一下类的定义、使用的相关知识。

1、类的定义

python 中,类表示具有相同属性和方法的对象的集合。在使用之前需要先定义类。

定义类的语法:

class ClassName:

         ‘’’类的帮助信息’’’  #类文档字符串

         statement         #类体

参数说明:ClassName----指定类名,一般使用大写字母开头,若是由两个单词,第二个单词也大写

‘’’类的帮助信息’’’-----用于指定类的文档字符串,定义该字符串后,在创建类的对象时,输入类名和左侧的括号“(”后,将显示该信息

statement   -----类体,主要由变量、方法、属性等定义语句组成

举例说明:什么都不要的情况下,使用pass

#定义类举例,如鸟类
class Bird:
    """bird"""
   
pass

2、创建类的实例

定义类完成以后,并不会真正创建一个实例。创建实例方法:

ClassName(parameterlist)

说明:ClassName  -----是必选参数,用于指定具体的类,parameterlist  是可选参数。当创建的类没有__init__()方法时,或者__init__()方法只有self 一个参数时,parameterlist 可以省略。

接着上面的例子:

#定义类举例,如鸟类
class Bird:
    """bird"""
   
pass
wildBird = Bird() #创建实例
print(wildBird)

3、创建__init__()方法

在创建类后,通常会创建一个__init__()方法,类似于Java中的构造方法。每当创建一个实例,会自动执行__init__()方法。且__init__()方法必须包含self参数,并且必须是第一个参数。

#定义类举例,如鸟类
class Bird:
    """bird"""
   
def __init__(self):
        print("我是鸟类")
wildBird = Bird() #创建实例,就会执行类中的__init__()方法
print(wildBird)

举例__init__()方法中由self以外的参数

#定义类举例,如鸟类
class Bird:
    """bird"""
   
def __init__(self,wing,claw,feather):
        print("我是鸟类,我有以下特征:")
        print(wing)
        print(claw)
        print(feather)
wing_a = '我有一双翅膀'
claw_a = "我有两个爪子"
feather_a = "我有满身的羽毛"
wildBird = Bird(wing_a,claw_a,feather_a) #创建实例
print(wildBird)

输出参考:

4、创建类的成员并访问

类的成员主要由实例方法和数据成员组成。创建类的成员后,可以通过实例进行访问。

1)创建实例方法

实例方法就是在类中定义函数。同__init__()方法一样,实例方法第一个参数也是self.

语法: def functionName(self,parameterlist):

                          block

说明:functionName-----指定方法名称,一般使用小写字母开头

self -----必要参数,表示类的实例

parameterlist----self 以外的参数,多个使用,隔开

block ----方法体

注意:实例方法和pyhton 中普通函数主要区别是,函数实现某个独立的功能。而实例方法是实现类中的一个行为,是类的一部分。

访问类中实例方法:instanceName. functionName(parameterlist)

instanceName -----为类的实例名称

举例说明:如接上面的例子,增加飞行的实例方法

#定义类举例,如鸟类
class Bird:
    """bird"""
   
def __init__(self,wing,claw,feather):
        print("我是鸟类,我有以下特征:")
        print(wing)
        print(claw)
        print(feather)
    def bird_fly(self,state):
        print(state)

wing_a = '我有一双翅膀'
claw_a = "我有两个爪子"
feather_a = "我有满身的羽毛"
wildBird = Bird(wing_a,claw_a,feather_a) #创建实例
wildBird.bird_fly("我正在上升的飞行状态!")

输出参考:

2)创建数据成员并访问

 数据成员是指在类中定义的变量,即属性。根据定义位置,又可以分为类属性和实例属性。

类属性:定义在类中,但是在函数体外的属性。类属性可以在类的所有实例之间共享值。

类属性可以通过类名称或者实例访问。

举例说明:

#定义类举例,如鸟类
class Bird:
    """bird"""
   
wing_a = '我有一双翅膀'
    claw_a = "我有两个爪子"
    feather_a = "我有满身的羽毛"
    def __init__(self):
        print("我是鸟类,我有以下特征:")
        print(Bird.wing_a)#通过类名称访问类属性
        print(Bird.claw_a)
        print(Bird.feather_a)

    def bird_fly(self,state):
        print(state)
wildBird = Bird() #创建实例
wildBird.bird_fly("我正在上升的飞行状态!")

另外,类的实例去访问类属性:

#定义类举例,如鸟类
class Bird:
    """bird"""
   
wing_a = '我有一双翅膀'
    claw_a = "我有两个爪子"
    feather_a = "我有满身的羽毛"
    def __init__(self):
        print("我是鸟类,我有以下特征:")
        print(Bird.wing_a)
        print(Bird.claw_a)
        print(Bird.feather_a)
    def bird_fly(self,state):
        print(state)
wildBird = Bird() #创建实例
print(wildBird.wing_a) #类的实例去访问类属性
wildBird.bird_fly("我正在上升的飞行状态!")

输出参考:

实例属性:是指定义在类的方法中的属性,只作用于当前实例中。

我们总结一下类属性和实例属性的主要区别:

类属性属于类本身,而实例属性属于类的每个实例。

所有类的实例共享相同的类属性,而每个实例都有自己独立的实例属性。

类属性通常用于存储与类相关的常量或共享状态,而实例属性通常用于存储每个实例特有的数据。

举例说明:

#定义类举例,如鸟类
class Bird:
    """bird"""
   
def __init__(self):
        self.wing = '我有一双翅膀'#实例属性
        self.claw = '我有两个爪子'#实例属性
        self.feather = '我有满身的羽毛'#实例属性
        print("我是鸟类,我有以下特征:")
        print(self.wing)
        print(self.claw)
        print(self.feather)
    def bird_fly(self,state):
        print(state)
wildBird = Bird() #创建实例
print(wildBird.wing)
wildBird.bird_fly("我正在上升的飞行状态!")

输出结果:

5、访问限制

在类的内部可以定义属性和方法,而在类的外部则可以直接调用属性或者方法来操作数据,从而隐藏了类内部的复杂逻辑。但是,在python中没有对属性和方法的访问权限进行限制。

在Python中,可以使用双下划线作为前缀来定义私有变量或者私有方法。私有变量或方法只能在类的内部访问,外部不能直接访问。

如__foo:双下划线表示private(私有)类型的成员,只允许定义该方法的类本身对其进行访问,而不允许通过类的实例对其进行访问,可以通过“类的实例名._类名__xxx“方式来访问

例如:

#定义类举例,如鸟类
class Bird:
    """bird"""
   
__tail = "鸟儿的尾巴一般不长"
    def __init__(self):
        print("__init__():",Bird.__tail)#可以通过类本身访问

wildBird = Bird() #创建实例
print("加入类名访问私有成员:",wildBird._Bird__tail)#通过“类的实例名._类名__xxx“方式来访问
print("直接访问:",wildBird.__tail)#直接通过实例访问报错

输出参考:

今天先写学习到这里了,每天进步一点点。今天也要加油啊!


http://www.niftyadmin.cn/n/5667227.html

相关文章

Spark-RDD持久化

一、Spark的三种持久化机制 1、cache 它是persist的一种简化方式,作用是将RDD缓存到内存中,以便后续快速访问,提高计算效率。cache操作是懒执行的,即执行action算子时才会触发。 2、persist 它提供了不同的存储级别&#xff0…

C++速通LeetCode中等第7题-和为K的子数组(巧用前缀和)

巧用哈希表与前缀和&#xff0c;前缀和差为k的两个序号之间的数组就是满足条件的子数组&#xff0c;用哈希表来存放每个序号的前缀和。 前缀和就是头元素到当前序号子数组元素的和 class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_…

IntelliJ IDEA 创建 Java 项目指南

IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),广泛用于 Java 开发。本文将介绍如何在 IntelliJ IDEA 中创建一个新的 Java 项目,包括环境的设置和基本配置。更多问题,请查阅 一、安装 IntelliJ IDEA 1. 下载 IntelliJ IDEA:访问 [JetBrains 官网](https://www.jet…

叉车倒车雷达系统,预防人与叉车相撞

叉车在厂区内运行&#xff0c;由于运行距离短&#xff0c;调头和倒车的次数比较多。叉车在调头和倒车的时候&#xff0c;驾驶员的视线会受到一定程度的限制。由于视野盲区&#xff0c;观察不周到及其他原因&#xff0c;使车辆调头或倒车时发生的事故较多。 若给叉车装上倒车雷达…

Tornado 是一个 Python 异步网络库和 web 框架

Tornado 是一个 Python 异步网络库和 web 框架&#xff0c;它最初由 FriendFeed 开发&#xff0c;后来被 Facebook 收购并开源。Tornado 因其非阻塞的 I/O 操作和优秀的性能而广受欢迎&#xff0c;特别是在需要处理大量并发连接的应用中。Tornado 的底层实现主要依赖于 Python …

高效财税自动化软件如何提升企业财务工作的效率与准确性

在当今企业运营中&#xff0c;财务管理发挥着核心作用。它不仅涉及企业正常运转和市场决策&#xff0c;还是推动企业向高质量发展迈进的关键动力。面对激烈的市场竞争与科技革新的双重挑战&#xff0c;财务管理亟需进行持续的转型与提升&#xff0c;为企业高质量发展目标的实现…

非结构化数据中台架构设计最佳实践

在数据驱动的时代背景下&#xff0c;非结构化数据已成为企业决策和运营的重要支撑。非结构化数据中台作为企业数据管理和分析的核心平台&#xff0c;其架构设计对于数据的高效利用和业务的快速发展至关重要。本文将探讨非结构化数据中台架构设计的最佳实践&#xff0c;旨在为企…

操作系统之磁盘

目录 一. 磁盘的结构二. 磁盘调度算法&#xff08;重点&#xff09;三. 减少磁盘延迟时间的方法四. 磁盘的管理五. 固态硬盘&#xff08;SSD&#xff09; \quad 一. 磁盘的结构 \quad 最内侧磁道上的扇区面积最小&#xff0c;因此数据密度最大 \quad 二. 磁盘调度算法&…