面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

仍以Student类为例,在Python中,定义类是通过class关键字:class Student(object):

pass

class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

定义好了Student类,就可以根据Student类创建出Student的实例,创建实例是通过类名+()实现的:>>> bart = Student()

>>> bart

>>> Student

可以看到,变量bart指向的就是一个Student的object,后面的0x10a67a590是内存地址,每个object的地址都不一样,而Student本身则是一个类。

可以自由地给一个实例变量绑定属性,比如,给实例bart绑定一个name属性:>>> bart.name = 'Bart Simpson'

>>> bart.name

'Bart Simpson'

由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:class Student(object):

def __init__(self, name, score):

self.name = name

self.score = score

注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去:>>> bart = Student('Bart Simpson', 59)

>>> bart.name

'Bart Simpson'

>>> bart.score

59

和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数和关键字参数。

相关推荐:《Python教程》

python class是什么_python中什么是类相关推荐

  1. python写一个类方法_python中如何写类

    类的定义 Python中,定义类是通过class关键字,例如我们定义一个存储学生信息的类: class Student(object): pass class后面紧接着是类名,即Student,类名通 ...

  2. python中类的嵌套_python中的嵌套类 | 学步园

    在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下.动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学 ...

  3. python中类的嵌套_python 中的嵌套类

    嵌套类的简单介绍 在看 idarling 源码中,经常出现如下代码: import sys import ida_funcs import ida_kernwin from PyQt5.QtCore ...

  4. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  5. python决策树 多分类_Python中的决策树分类:您需要了解的一切

    python决策树 多分类 什么是决策树? (What is Decision Tree?) A decision tree is a decision support tool that uses ...

  6. python基础知识测试题_Python中的单元测试—基础知识

    python基础知识测试题 Unit testing is the number one skill which separates people who just finished their de ...

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

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

  8. python数据库模糊查询_python中数据库like模糊查询方式

    python中数据库like模糊查询方式 在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%. 将在Python中执行的sql语句改为: sql = "SELECT * F ...

  9. python redis 消息队列_python中利用redis构建任务队列(queue)

    Python中的使用标准queue模块就可以建立多进程使用的队列,但是使用redis和redis-queue(rq)模块使这一操作更加简单. Part 1. 比如首先我们使用队列来简单的储存数据:我们 ...

  10. python元类的概念_Python中的元类编程 | 学步园

    过去有这样的概念,一直没有深究它的意义.今天同事问到,刚好也好好了解下. #===============================================Python中的元类编程=== ...

最新文章

  1. HEOI2018游记
  2. Qt控制台工程不能调试问题
  3. ContestHunter暑假欢乐赛 SRM 08
  4. convirt2.5在虚拟机上安装笔记
  5. ACM主要赛考察内容
  6. 你跟最伟大领导的距离,或许只差这一点
  7. 【STM32】【STM32CubeMX】STM32CubeMX的使用之三:UART串口通信
  8. C语言之文件读写探究(一):fopen、fclose(文件的打开和关闭)
  9. android 的a标签,Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)...
  10. 自定义异步加载资源插件
  11. php获取笔顺矢量,php如何获取汉字笔画数功能的实例分析
  12. 到底有多少种病毒?科学家们分析了100多种SARS-CoV-2变种的功能
  13. Recovery文件路径
  14. 声网 X 牛客网 200万场视频面试背后的实时互动技术支撑
  15. Android chrome默认设置Autoplay policy
  16. 树莓派2使用TSL2561
  17. linux查看文件大小ls
  18. LTE物理传输资源(3)-时频资源
  19. dom4j解析dom示例
  20. Arduino使用u8g2库函数驱动4线/6线OLED屏幕(I2C/SPI通讯)附带库函数详解

热门文章

  1. springboot集成购买阿里的rocketmq
  2. HTTP 304状态码
  3. HBase MemStore和Compaction剖析
  4. 物联网时代商业模式将驱动商业策略的转变
  5. Android之AppWidget
  6. 用递归来实现汉诺塔的问题
  7. Android实现圆角和圆形
  8. The run destination 设备名称 is not valid for Running the scheme '项目名称'.
  9. 关于laravel报错Class 'Barryvdh\Debugbar\ServiceProvider' not found
  10. hexo 环境变量_优雅的博客框架,快速、简洁、高效且主题丰富——Hexo