热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Python面向对象编程】第02篇类和对象

本篇我们详细介绍一下Python类和对象的概念,以及如何定义类。对象对象是一个包含数据和功能的容器。数据代表了特定时刻的对象,因此也被称为状态。P

本篇我们详细介绍一下 Python 类和对象的概念,以及如何定义类。


对象

对象是一个包含数据和功能的容器。

数据代表了特定时刻的对象,因此也被称为状态。Python 使用属性表示对象的状态。功能代表了对象的行为,Python 使用函数表示行为。当函数和对象关联时,就成为了对象的方法。

因此也可以说,对象是一个包含状态和方法的容器。

在创建对象之前,我们需要先定义类。然后就可以基于类创建一个或多个对象。类的对象也被称为类的实例。


定义类

Python 使用关键字 class 加上类名和冒号定义类。以下示例定义了一个 Person 类:

class Person:pass

按照惯例,我们使用首字母大写的字符串作为类的名称。如果类名中包含多个单词,我们使用驼峰命名法,例如 SalesEmployee。

以上示例中的 Person 类没有任何内容,所以我们使用 pass 语句作为占位符,以后再添加更多代码。

如果需要创建类的实例,可以使用类名加上括号,例如:

person = Person()

当我们打印 person 对象,可以看到它的名字和内存地址:

class Person:passperson = Person()print(person)

输出结果如下:

<__main__.Person object at 0x00000253020E60B0>

如果想要获取对象的唯一标识&#xff0c;可以使用 id() 函数。例如&#xff1a;

print(id(person))

输出结果如下&#xff1a;

2555540037808

对象的 id 具有唯一性。在 CPython 中&#xff0c;id() 函数返回的是对象的内存地址。hex() 函数可以将 id() 函数返回的整数转换为小写形式的十六进制字符串&#xff1a;

print(hex(id(person)))
0x253020e60b0

person 对象是 Person 类的一个实例&#xff0c;以下 isinstance() 函数的返回结果为 True&#xff1a;

print(isinstance(person, Person)) # True

类也是对象

Python 中的一切都是对象&#xff0c;包括类。

当我们定义 Person 类时&#xff0c;Python 会创建一个名为 Person 的对象。Person 对象包含属性&#xff0c;例如&#xff0c;__name__ 属性存储了它的名称&#xff1a;

print(Person.__name__)

输出结果如下&#xff1a;

Person

Person 对象的类型为 type&#xff1a;

print(type(Person))
<class &#39;type&#39;>

Person 类还包含一个方法。例如&#xff0c;以下代码表示创建一个新的实例&#xff1a;

person &#61; Person()

总结


  • 对象是一个包含状态&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;的容器。
  • 类是创建对象的模板。
  • 在 Python 中&#xff0c;类也是对象&#xff0c;它是类型&#xff08;type&#xff09;的一个实例。

推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • C++语言入门:数组的基本知识和应用领域
    本文介绍了C++语言的基本知识和应用领域,包括C++语言与Python语言的区别、C++语言的结构化特点、关键字和控制语句的使用、运算符的种类和表达式的灵活性、各种数据类型的运算以及指针概念的引入。同时,还探讨了C++语言在代码效率方面的优势和与汇编语言的比较。对于想要学习C++语言的初学者来说,本文提供了一个简洁而全面的入门指南。 ... [详细]
  • 开发笔记:python协程的理解
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python协程的理解相关的知识,希望对你有一定的参考价值。一、介绍什么是并发?并发的本质就是 ... [详细]
  • 似乎有两种不同的方法可以将字符串转换为字节,如对typeerror的回答所示:str不支持缓冲区接口。这些方法中哪一种比较好或更适合用Python& ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 前言无论使用哪种语言,我们都需要关注性能优化,提高执行效率。选择脚本语言需要持久的速度。在某种程度上,这句话说明了Python作为一种脚 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
author-avatar
莎仕比亚的围脖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有