Python中所有的数据都是对象,它提供了许多高级的内建数据类型,功能强大,使用方便,是Python的优点之一。那么什么时候使用自定义类呢?

比如设计一个Person类,如果不使用自定义类,可以这样做:person=['mike', 23, 'male']  #0-姓名, 1-年纪, 2-性别

print(person[0], person[1], person[2])

可以看到,使用内建类型list,需要用下标来引用成员数据,不直观。可以改用dic类型来做:person1={'name':'mike', 'age': 23, 'sex': 'male'}

person2={'name':'hellen', 'age': 20, 'sex': 'female'}

print(person1['name'], person1['age'], person1['sex'])

这样不用记忆下标,直观多了。但是字典的语法仍然有些麻烦,如果能够像这样引用:person.name,person.age等,就更好。这就是自定义类存在的好处了:class Person:

def __init__(self, name, age, sex):

self.name = name

self.age = age

self.sex = sex

def __str__(self): #重载该函数便于测试

sep = ','

return self.name+sep+str(self.age)+sep+self.sex

person1 = Person('mike', 23, 'male')

person2 = Person('hellen', 20, 'female')

print(person1)

print(person2.name, person2.age, person2.sex)

可以看到,只要定义好这个类的构造函数,就可以很方便的生成这个类的实例,并且引用数据成员也很方便,比直接使用内建类型方便多了。其实Python就是用内建类型dic来实现自定义类的成员的存储和引用的,从这个角度来看,自定义类是内建类的简化使用方式,内建类型是自定义类型内部必要的组成部分。同时,由于自定义类可以定义自己的成员函数或者重载预定义的方法,所以自定义类扩展了内建类的功能,可以提供对现实事物更好的模拟,这正是面向对象编程的优点。编程的时候,先对所要模拟的事物形成概念,然后尽量使用类来抓住概念,这是面向对象设计的关键。如果需要产生多个同类的对象,应该尽可能地设计一个自定义类去抽象它们。

对自定义类的使用也别过分,有些功能只需要定义一个函数就可以做到了,这个时候就没有必要设计一个自定义类。

python什么时候用类_python中什么时候使用自定义类相关推荐

  1. python 多线程 类_Python中如何自定义一个多线程类呢?

    摘要: 下文讲述Python中自定义一个多线程类的方法分享,如下所示: 实现思路: 1.定义一个类继承threading.Thread 2.在自定义类中构造函数重写run方法 例: Python3中自 ...

  2. python中的元类_python中的元类

    类也是对象,但是类有创建对象的能力 动态创建一个类: classmonkey():defbanana(self):print 'banana!' defapple(self):print 'i wan ...

  3. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

  4. python class类_python中的class(类)

    编码注释: 在源文件的第一行或第二行写入如下内容: # -*- coding:gbk -*- # 设置源文件编码格式为:gbk 或 # -*- coding:utf-8 -*- # 设置源文件编码格式 ...

  5. python类_Python中的类

    Python和Java都是面向对象的语言,对象从类中获取,类指的是同一类具有相同特征的事物,比如拉布拉多,柯基,哈士奇,它们都是狗,具有狗的相同特征,所以可以被归为一类Dog,Python中类的使用与 ...

  6. python元类_python中的元类 metaclass

    python中的元类 metaclass 在python中,类(class)本身也是一个实例对象, 它的类型则是元类, 如果没有指明, 则自定义类的类型是type. 换言之, 我们所定义的普通类都是t ...

  7. python编写ATM类_Python中编写类的各种技巧和方法

    有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling).你可以把它当作一个教程, ...

  8. python中的元类_Python中的元类(metaclass)

    提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自身有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理 ...

  9. python中类的属性一般来说_python中实例属性和类属性之间的关系

    匿名用户 1级 2018-06-25 回答 一般来说,在Python中,类实例属性的访问规则算是比较直观的. 但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此. 在这里 ...

最新文章

  1. 从点云中重建三维物体实例RfD-Net
  2. mysql中的innodb_flush_log_at_trx_commit参数的意义
  3. 浅谈代码的执行效率(2):编译器的威力 [摘自赵劼老师的博客]
  4. .NET Core 在中国的现状调研
  5. [建议]我对软工有话说(上)
  6. 为什么NTFS删除超过4G大文件或数据库文件后FILE RECORD大小表现为0
  7. python中文字体下载_python中matlabplot和seaborn中文字体显示的一种解决方案
  8. 徐州哪个技校学计算机,徐州技校,徐州技术学校哪个好,徐州技术学校哪个知名度高一点 - IT教育频道...
  9. 100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
  10. L2-013. 红色警报
  11. 计算机视觉有哪些商业用途​
  12. 【转存】游戏中常用术语
  13. 复制文件或文件夹时出错_为什么对于小白来说,复制文件一个都会出错???...
  14. 史上最全!!收藏了!3D建模软件大全
  15. 汇编语言 - 实验 - 计算 (X+(Y*Z-100))/W
  16. 第三章 群体用户画像分析
  17. 百度的搜索引擎相关技术的分析
  18. matlab要掌握什么,学习matlab需要什么基础?
  19. 神经网络中的对抗攻击与对抗样本
  20. 产品读书《设计中的设计》-设计

热门文章

  1. 036_CSS导航条
  2. 游戏对象的移动旋转缩放
  3. C语言取字节的第n二进制,学C语言的看过来,最完整进制转换、整数和小数内存存储模型...
  4. linux系统在硬盘上安装程序,在硬盘中安装Linux操作系统最简单的方法
  5. java 多项式拟合最多的项数_牛顿插值法、曲线拟合、多项式拟合
  6. python运行不了、显示警告_Python中偶尔遇到的细节疑问(二):UnicodeDecodeError,警告与忽略警告warnings...
  7. php提示行号,在php中使用trigger_错误时如何获得正确的行号?
  8. python爬音乐评论生成词云图_python爬虫+词云图,爬取网易云音乐评论
  9. java测试时找不到类,我在class文件运行不了测试文件,提示找junit4找不到任何的测试项目...
  10. 华为云计算之ebackup了解