Python中类的相关术语(附带案例)

目录

1、面向对象

2、类

3、实例

4、初始化方法

5、魔法方法

6、字符串方法

7、self

8、数据、属性、操作、行为

9、父类、基类、超类  or  子类、派生类

10、多态

11、重载多态  and  重写多态

12、名称解释

1、面向对象

        在Python中,面向对象编程(OOP)是一种非常重要的编程范式。在Python中,可以通过创建类(class)和实例化对象(object)来使用面向对象的编程思想。

        下面是一个简单的例子,People是一个类,__init__方法是一个魔法方法,在创建对象时被调用,用于初始化对象的属性。

class Person:def __init__(self, name):self.name = name# 初始化实例
p1 = Person("小白")
print(p1.name)

2、类

        在Python中,类是一种用来创建对象的蓝图或模板。通过定义类,可以定义对象的属性和方法。

class 关键字用于定义一个类,在类的内部,你可以定义各种属性和方法。

  • 属性(attribute):类的属性是与该类相关联的数据。
  • 方法(method):类的方法是与该类相关联的函数。方法的第一个参数通常是 self,代表对当前对象的引用。

        通过类,可以创建对象的实例,并调用对象的方法来完成相关操作。

class Person:def __init__(self, name):self.name = namedef get_name(self):return self.name# 定义一个实例
p1 = Person("小白")
# 实例拥有属性
print(p1.name)
# 通过实例调用类里面定义的函数方法
print(p1.get_name())

3、实例

        在Python中,实例是由类创建的对象。通过实例,可以使用类中定义的属性和方法。

        在上面的代码中,Person是一个类,p1是 Person类创建的一个实例。通过实例,我们可以使用 Person类中定义的属性和方法。例如,我们可以通过 p1.name 访问实例的 name 属性,并通过 p1.get_name() 调用实例的 get_name方法。

4、初始化方法

        在Python中,初始化方法是一个特殊的方法,用于创建类的实例并初始化实例的属性。初始化方法的名称为 __init__,并且第一个参数通常是 self,代表对当前对象的引用。通过初始化方法,可以在创建对象时设置对象的初始状态。

        在上面的代码中,__init__ 方法被用来初始化实例的 name 属性。在创建实例时,我们传递了 name  参数,并将它们存储在实例的属性中。

        需要注意的是,初始化方法是可选的。如果你没有定义初始化方法,Python会提供一个默认的初始化方法。但通常情况下,你需要自己定义初始化方法来完成对象的初始化工作。

        另外,除了 __init__ 方法外,还有其他一些特殊方法可以用来定制类的行为。这些特殊方法被称为“魔术方法”,例如 __str__ 方法用于定义对象的字符串表示形式,__eq__ 方法用于定义对象的相等性判断等。熟练掌握这些特殊方法可以让你更好地定制类的行为。

5、魔法方法

        在Python中,魔术方法(Magic Methods)是一种特殊的方法,用双下划线 __ 开头和结尾命名的方法。这些方法用于定制类的行为,例如实现对象的比较、转换、算术运算等功能。通过使用魔术方法,可以让类与Python的内置功能更好地集成。

        例如 __str__ 方法用于定义对象的字符串表示形式,__doc__获取类的文档注释。

class Person:"""这里是Person的文档注释"""def __init__(self, name):self.name = namedef get_name(self):return self.namedef __str__(self):return f"姓名:{self.name}"p1 = Person("小白")
print(p1)
print(p1.__doc__)

6、字符串方法

        在Python中,类的 __str__() 方法是一种特殊的方法,用于返回对象的字符串表示形式。当打印一个对象或使用 str(obj) 函数时,Python会自动调用该对象的 __str__() 方法来获取其字符串表示。

        上面的示例中,Person 类定义了一个 __init__() 方法来初始化对象的属性,以及一个 __str__() 方法来返回对象的字符串表示。在 __str__() 方法中,我们使用了格式化字符串(f-string)来构建要返回的字符串。

        通过定义 __str__() 方法,我们可以控制对象的字符串表示,使其更有意义和可读性。这在调试和输出对象信息时非常有用。

7、self

        在Python中,self 是一个特殊的参数,用于表示对象实例本身。当你调用类的方法时,Python会自动将对象实例传递给方法的第一个参数,通常被命名为 self

        通过使用 self,可以在类的方法中访问对象的属性和其他方法。在上面的示例中,self 参数被用来访问对象实例的 name 属性。

        总之,self 是Python中用来表示对象实例自身的约定俗成的名称,通过它可以在类的方法中访问对象的属性和方法。

8、数据、属性、操作、行为

        在面向对象编程中,常常使用以下概念来描述类和对象的不同方面:

  1. 数据(Data):数据是类的属性(也称为实例变量),用于表示类的状态和特征。它们存储在对象中,并且每个对象都可以具有不同的数据值。例如,在一个人(Person)类中,年龄(age)和姓名(name)可以是该类的数据。

  2. 属性(Attribute):属性是类的数据和方法的统称。它们是类和对象的特征,并且可以通过点符号来访问。属性可以是类级别的,被所有对象共享,也可以是对象级别的,每个对象独立拥有自己的属性。

  3. 操作(Operation):操作是类的方法(也称为成员函数),用于执行特定的功能或操作。操作定义了类可以做什么以及如何与对象进行交互。例如,在一个人(Person)类中,say_hello() 可以是一个操作,用于打印出个人问候信息。

  4. 行为(Behavior):行为是对象对外部请求做出的响应。它描述了对象如何根据接收到的消息作出反应。行为由类的方法实现,使对象能够执行某些动作或操作。例如,在一个人(Person)类中,行走(walk)可以是一个行为,用于移动对象的位置。

        这些概念相互关联,共同构成了面向对象编程的基础。数据和属性描述了类和对象的特征,操作和行为描述了类和对象的行为和功能。通过将数据、属性、操作和行为组合在一起,可以创建具有丰富功能和交互能力的类和对象。

9、父类、基类、超类  or  子类、派生类

        在面向对象编程中,一个类可以继承自另一个类,被继承的类称为父类(Parent Class)、基类(Base Class)或超类(Superclass),而继承的类称为子类(Subclass)或派生类(Derived Class)。

class Person:def __init__(self, name):self.name = namedef get_name(self):return self.namedef __str__(self):return f"姓名:{self.name}"class Student(Person):def __init__(self, name, age):Person.__init__(self, name)self.age = agedef get_age(self):return self.ages = Student("小白", 25)
# 子类可以调用自己的方法
print(s.get_age())
# 子类调用父类的方法
print(s.get_name())
print(s)

        在上述示例中,Person是父类,Student是子类。子类 Student继承了父类 Person的 __init__()get_name() 方法,并且还定义了自己的 get_age() 方法。

        通过继承,子类可以直接使用父类的属性和方法,并且还可以在子类中添加自己的特定行为。这样可以减少代码的重复,并且使得程序的设计更加灵活和可扩展。

10、多态

        python没有多态 python到处都是多态

        多态是面向对象编程中的一个重要概念,指的是同一操作作用于不同的对象,可以有不同的解释和实现,产生不同的执行结果。多态性是面向对象编程的三大特性之一,另外两个是封装和继承。

        在多态中,子类可以将自己的实例化对象传递给父类的方法,从而实现对父类方法的重载或覆盖。当程序执行时,会根据实际传入的对象类型来决定调用哪个方法,从而实现不同的行为。

class Animal:def __init__(self, name):self.name = namedef sound(self):print("Animal makes a sound")class Dog(Animal):def sound(self):print("Dog barks")class Cat(Animal):def sound(self):print("Cat meows")# 创建Animal、Dog和Cat对象
animal = Animal("Animal")
dog = Dog("Dog")
cat = Cat("Cat")# 调用各自的sound()方法
animal.sound()  # 输出:Animal makes a sound
dog.sound()  # 输出:Dog barks
cat.sound()  # 输出:Cat meows

11、重载多态  and  重写多态

        重载多态(Overloading Polymorphism)和重写多态(Overriding Polymorphism)都是多态性的体现,但它们实现多态性的方式不同。

        重载多态指的是在一个类中定义多个同名方法,但是这些方法的参数类型、个数或顺序不同,从而在调用该方法时根据传入的参数类型、个数或顺序来决定调用哪个方法。重载多态是通过编译期间静态绑定来实现的。

        重写多态指的是子类对父类方法的重写或覆盖,从而使得同样的方法调用对于不同的对象可以产生不同的行为。重写多态是通过运行期间动态绑定来实现的。

12、名称解释

  •         (1)实例属性:在Python中,实例属性是与类的实例相关联的属性,每个类的实例都可以具有不同的实例属性值。实例属性通常在类的构造方法(通常是__init__方法)中定义,并且它们通过self关键字与实例关联。
    •         (2)实例方法:在Python中,实例方法是与类的实例关联的方法,它们通过类的实例调用。实例方法的第一个参数通常是self,它代表调用该方法的实例本身。通过self,实例方法可以访问和操作实例的属性。
      •         (3)类属性:在Python中,类属性是与整个类关联的属性,而不是与类的实例关联。类属性是在类级别上定义的属性,它们在所有类的实例之间共享相同的值。类属性通常在类的顶层定义,而不在任何方法内。
        •         (4)类方法:在Python中,类方法是与类关联而不是与类的实例关联的方法。类方法使用@classmethod装饰器进行定义,并且其第一个参数通常是cls,表示类本身。类方法可以通过类调用,而不需要创建类的实例。
          •         (5)静态方法:在Python中,静态方法是与类关联的方法,但与实例无关。静态方法使用@staticmethod装饰器进行定义,与普通的函数类似,但位于类的命名空间中。静态方法既不需要表示实例的self参数,也不需要表示类的cls参数。
class Person:# 类属性info = "hello"# 类方法@classmethoddef get_cls(cls):return cls.__name__# 静态方法@staticmethoddef get_info():return Person.info# 初始化实例def __init__(self, name):self.name = name# 实例方法def get_name(self):return self.namedef __str__(self):return f"姓名:{self.name}"# p1是一个实例
p1 = Person("小白")
# 实例属性
print(p1.name)
# 通过实例调用实例方法
print(p1.get_name())
# 通过类名调用类属性
print(Person.info)
print(Person.get_cls())
print(Person.get_info())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/443162.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现单点登录

指再多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分。 相比于单系统登录,sso需要一个独立的认证中心,只有认证红心能接受用户的用户名密码等安全信息,其他系统…

nodejs详细介绍2以及vue脚手架

前言 首先给宝子们说声抱歉,因为自己在使用vscode执行vue脚手架的时候出现了很多问题,在经过解决之后还是有一个对应的我弄了一天没弄好,就是“vscode的终端将被任务重用,按任意键关闭”然后导致的是自己没心情学习一点&#xff…

人工视觉仍然需要图像采集卡

最初,图像采集卡被用作模拟视频数字转换器和图像缓冲器,但如今它们能够执行复杂的任务,例如图像处理。图像采集卡的设计不断发展,旨在提高系统性能并减少计算机处理需求。 除了图像采集之外,图像采集卡还执行机器视觉…

WebService的services.xml问题

WebService有多种实现方式,这里使用的是axis2 问题: 在本地开发,访问本地的http://localhost:8080/services/ims?wsdl,正常访问 但是打成jar包,不管是linux还是window启动,都访问不到,报错…

构建基于Flask的跑腿外卖小程序

跑腿外卖小程序作为现代生活中的重要组成部分,其技术实现涉及诸多方面,其中Web开发框架是至关重要的一环。在这篇文章中,我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型,展示其基本功能和实现原理。 首先&…

外汇天眼:澳大利亚法院判决西太平洋银行因不合理行为在利率互换交易中支付180万美元

联邦法院宣布,西太平洋银行在2016年10月执行120亿美元的利率互换交易时涉及不合理行为。西太平洋银行将支付与该行为相关的最高罚款180万美元,以及澳大利亚证券投资委员会(ASIC)的1800万美元的诉讼和调查费用。 西太平洋银行的不…

鸿蒙会取代Android吗?听风就是雨

现在说取代还谈不上,毕竟这需要时间。安卓作为全球第一的手机操作系统,短时间内还无法取代。持平iOS甚至超过iOS有很大可能,最终会呈现“三足鼎立”有望超过安卓基数。 作为全新的鸿蒙操作系统,其现在已经是全栈自研底座。按照鸿…

awk命令以及用法

awk:是列处理工具,把一行提取出来,然后一列一列的对比,读取一行,处理一行。 sed:是行编辑器,无法取列,也是读取一行,处理一行。 -F 以什么为分隔符 {print $n} 打印第…

异步任务的一些思考

前言 XXL-Job部署教程 项目中,必然少不了数据的导入导出,针对数据的导入导出简单复盘一下。 为了不占用资源消耗时间,影响用户体验,大量数据的导入导出一般都是异步执行 导入的时候,如果数据量很大,一次…

腾讯云部署vue+node项目

文章目录 一、安装宝塔二、vue项目部署三、node项目部署 前言: 关于项目部署,一开始也是找了很多资料,费了点时间,所以记录一下。希望能对各位有所帮助。 一、安装宝塔 1.首先在控制台,进入云服务器的终端界面 2.输入命令和密码获取权限,并且安装宝塔界面 yum install -y w…

配置IPv6静态路由

1、静态路由简介 静态路由是一种需要管理员手工配置的特殊路由。 静态路由在不同网络环境中有不同的目的: 当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。 在复杂网络环境中,配置静态路由可以改进网络的性能,并…

Java中实例化的一般过程

在Java中,当你有几个类(如 ManualTriggerStartNode, EndNode, TimerTriggerStartNode)继承自一个基类(如 BaseNode),实例化这些子类时的确定性主要依赖于你的具体需求和上下文。 实例化的一般过程&#xf…