类,是一些有共同特征和行为事物的抽象概念的总和。

1. 定义一个类:

我们使用class来定义一个类,和之前说过的定义函数用def类似。在类里面给变量赋值时,专业术语称之为类的属性。

比如拿可口可乐来举例:

 class CocaCola:
     formula = ['caffeine','sugar','water','soda']
     # formula意为配方,给变量formula赋值

2. 类的实例化

上面定义好了类,接下来举实例

 class CocaCola:
     formula = ['caffeine','sugar','water','soda']

 coke_for_me = CocaCola()
 print(coke_for_me.formula)

左边是变量名coke_for_me,右边是类的名称CocaCola,看起来很像在给变量赋值,我们将其称为类的实例化。而被实例化后的对象,称之为类的实例。

3. 类属性的引用

在第2点类的实例化中,print时括号中用的是cake_for_me.formula,当输入符号点(.)时,Pycharm会自动联想出定义的类的属性,这就是类属性的引用。

4. 实例属性的引用

 class CocaCola:
     formula = ['caffeine','sugar','water','soda']

 coke_for_China = CocaCola()
 # 创建实例
 coke_for_China.local_logo = '可口可乐'
 # 创建实例属性
 print(coke_for_China.local_logo)

5. 实例方法

之前讲字符串时有说过字符串的方法,这里类的实例也有方法可以用。在类的实例中使用的方法即函数,但我们称之为实例方法。

 class CocaCola:
     formula = ['caffeine','sugar','water','soda']
     def drink(self):
         # 定义方法,self指被创建的实例本身,这里即下面的coke
         print('Cool!')

 coke = CocaCola()
 coke.drink()
 # 调用实例方法

6. __init__()的使用

__init__()的神奇之处在于,当类中定义了它之后,在创建实例时,它能帮忙自动处理很多事情,比如新增实例属性。

之前在第4点中,我们是先创建实例,再创建实例属性,用__init__()的话可以直接新增实例属性,后面直接调用即可。

 class CocaCola:
     formula = ['caffeine','sugar','water','soda']
     def __init__(self):
         # init是单词initializ(初始化)的缩写
         self.local_logo = '可口可乐'

 coke = CocaCola()
 print(coke.local_logo)

7. 类的继承

像可口可乐,除了我们知道的原味之外,还有32种口味,不含咖啡因的、无糖可乐、樱桃味、柠檬味、 香草味等,他们都继承可口可乐这个品牌。在类中也一样,有父类和子类,子类可以继承父类,称之为类的继承。

 class CocaCola:
     formula = ['caffeine','sugar','water','soda']
     def __init__(self,coke_taste):
         self.coke_name = coke_taste
     def drink(self):
         print('{}可乐的配方含有{} '.format(self.coke_name,self.formula))

 class CaffeineFree(CocaCola):
     # 继承父类CocaCola
     formula = ['High Fructose Corn Syrup','Carbonated Water']
     #无咖啡因可乐的配方

 coke_a = CaffeineFree('无咖啡因')
 # 给父类__init__中的coke_taste参数赋值CocaCola_Free
 coke_a.drink()

关于类的简单介绍就到这里,后续会介绍如何使用第三方库。

操作环境:Python版本,3.6;PyCharm版本,2016.2;电脑:Mac

-----   End   -----

作者:杜王丹,微信公众号:杜王丹,互联网产品经理。

Python入门:类与类的继承的更多相关文章

  1. Python 入门基础20 --面向对象_继承、组合

    今日内容 组合:自定义类的对象作为类的属性 继承:父类与子类.多继承 1.组合 将自定义类的对象作为类的属性 class Teacher: def __init__(self, name): self ...

  2. Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系)

    Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系) 在面向对象的中,类与类之间存在三种关系:依赖关系.组合关系.继承关系. 1.依赖关系:将一个类的类名或对象当做参数传递给另一个函数被 ...

  3. python入门学习:8.类

    python入门学习:8.类 关键点:类 8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类 8.1 创建和使用类   面向对象编程是最有效的软件编写方法之一.在面向对象编程中,你编写 ...

  4. Python 入门 之 类成员

    Python 入门 之 类成员 1.类的私有成员: 私有: 只能自己拥有 以 __ 开头就是私有内容 对于每一个类的成员而言都有两种形式: - 公有成员,在任何地方都能访问 - 私有成员,只有在类的内 ...

  5. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  6. python 零散记录(七)(下) 新式类 旧式类 多继承 mro 类属性 对象属性

    python新式类 旧式类: python2.2之前的类称为旧式类,之后的为新式类.在各自版本中默认声明的类就是各自的新式类或旧式类,但在2.2中声明新式类要手动标明: 这是旧式类为了声明为新式类的方 ...

  7. Python学习笔记008_类_对象_继承_组合_类相关的BIF

    # 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...

  8. python 入门基础24 元类、单例模式

    内容目录: 一.元类 二.单例模式 一.元类 1 什么是元类: 源自一句话:在python中,一切皆对象,而对象都是由类实例化得到的 class OldboyTeacher: def __init__ ...

  9. Python中新式类 经典类的区别(即类是否继承object)

    首先什么是新式类 经典类呢: #新式类是指继承object的类 class A(obect): ........... #经典类是指没有继承object的类 class A: ........... ...

  10. Python入门之面向对象编程(二)python类的详解

    本文通过创建几个类来覆盖python中类的基础知识,主要有如下几个类 Animal :各种属性.方法以及属性的修改 Dog :将方法转化为属性并操作的方法 Cat :私人属性讲解,方法的继承与覆盖 T ...

随机推荐

  1. 洛谷 P1350 车的放置

    洛谷 P1350 车的放置 题目描述 有下面这样的一个网格棋盘,a,b,c,d表示了对应边长度,也就是对应格子数. 当a=b=c=d=2时,对应下面这样一个棋盘 要在这个棋盘上放K个相互不攻击的车,也 ...

  2. .net core中使用缓存(cache)

    官方文档:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-2.2#use ...

  3. java 继承类之后,访问不到超类的属性的原因及解决方法

    是因为超类里的属性没有加上public关键字 解决方法: 超类和超类里的属性或者方法如果想被其他包下的方法调用,就必须全部加上public权限,即设置为公开访问 例: @Controller publ ...

  4. mongodb原生node驱动

    写在前面 最近读<node.js学习指南>,对于mongodb没有介绍太多的工作原理,但是对于一个前端开发者,即使你还没有用过这种数据库也可以让你很好的理解和使用       一本非常好的 ...

  5. Jenkins部署资料

    http://www.cnblogs.com/gaohongchen01/p/5058928.html https://www.javacodegeeks.com/2015/04/jenkins-ho ...

  6. MySQL数据库语法(一)

    MySQL数据库语法 数据库管理系统(DBMS)的概述 什么是DBMS:数据的仓库 方便查询 可存储的数据量大 保证数据的完整.一致 安全可靠 DBMS的发展:今天主流数据库为关系型数据库管理系统(R ...

  7. [面试]CVTE 2019提前批 Windows应用开发一面

    7.30接到面试电话问有没有时间进行一个20分钟左右的电话面试,不巧当时要去赶火车,就约到了两天后. 8.1还是同一个面试官打来电话 首先介绍项目吧,第一场面试,项目准备的也不怎么充分,讲了一个HAL ...

  8. 【坚持】Selenium+Python学习记录 DAY10

    2018/05/31-2018/06/1 [官方文档](https://www.jetbrains.com/help/pycharm/set-up-a-git-repository.html) 通过p ...

  9. 持续更新 | 想不到的key

    前言 开坑写一些我认为比较巧妙的东西想不到的东西 正文 判断回文串的时候 考虑一下枚举中心位往两边扩展 最大子矩阵与单调栈 遇难则反系列 算合法可以转换成算不合法.同理,不合法转换成合法计算有时也会简 ...

  10. thinkphp 3.x下的任意文件包含(有条件)分析

    漏洞原理 实现自己的模版引擎不当,在模版渲染的情况下存在任意变量覆盖漏洞.. 漏洞详情 漏洞位置1 ThinkPHP/Library/Think/View.class.php 需要修改配置文件 指定T ...