几个名词知识:

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

实例变量:定义在方法中的变量,只作用于当前实例的类。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法:类中定义的函数。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。

实例化:创建一个类的实例,类的具体对象。

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

类定义语法格式如下

# E:\Python36
# coding=GBK
class classname:script……

类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。

类对象支持两种操作:属性引用和实例化。

例如:

# E:\Python36
# coding=GBK
#类定义
class people:#定义基本属性#name = ''age = 1def f(self):return 'hello world'# 实例化类
b = people()# 访问类的属性和方法
print("people类的属性age为:", b.age)
print("people类的方法f输出为:", b.f())

执行以上程序输出结果为:

people类的属性age为: 1

people类的方法f输出为: hello world

定义类的时候是可以定义为一个可以初始化的类,因此类可能会定义一个名为 __init__() 的特殊方法(就是所谓的构造方法),类的实例化操作会自动调用 __init__() 方法。

当然, __init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上。

例如:

# E:\Python36
# coding=GBK
#类定义
class people:#定义基本属性#name = ''#age = 0#定义构造方法,用于初始化def __init__(self,n,a):self.name = nself.age = a def speak(self):print(self.name , self.age)if __name__ == '__main__':#实例化 p = people('jack',25)p.speak()

输出结果为:jack 25

类的方法

在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数:

例如:class_people.py

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#类定义
class people:#定义基本属性# name = ''# age = 0#定义构造方法,用于初始化def __init__(self,n,a):self.name = nself.age = adef speak(self):print("我叫{0},今年{1}岁了!" .format(self.name, self.age))if __name__ == '__main__':p = people('jack',25)p.speak()

执行代码输出结果:我叫jack,今年25岁了!

继承

    在这里我应用了模块,模块就是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。

写一个类(student)来继承类(people),people应用模块引入的方式,

如下:class_student.py

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from class_people import people as p
#单继承示例,继承people
class student(p):# grade = ''def __init__(self,n,a,g):#调用父类的构函p.__init__(self,n,a)self.grade = g#重写父类的方法def speak(self):print("我叫%s,现在%d岁了,我是一个在校学生,在读%s年级"%(self.name,self.age,self.grade))if __name__ == '__main__':s = student('jack',25,'大学三')s.speak()

执行代码输出结果为:

我叫jack,现在25岁了,我是一个在校学生,在读大学三年级

多继承

这里再增加一个类


这里有用到了一个知识点:__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。

例如:class_speaker.py

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from class_people import people as p
class speaker(p):# topic = ''# 构造方法def __init__(self,n,a,t):p.__init__(self,n,a)self.topic = tdef speak(self):print("我叫%s,今年%d岁,是一个演说家,我今天演讲的主题是%s"%(self.name,self.age,self.topic))if __name__ =='__main__':s = speaker('jack',25,'Python')s.speak()

执行代码输出结果为:

我叫jack,今年25岁,是一个演说家,我今天演讲的主题是Python

下面我们来写一个多继承的代码:

如下:class_sample.py

#!/usr/bin/env python
# -*- coding: UTF-8 -*-from class_student import student as t
from  class_speaker import speaker as s
# 多继承,继承学生和演说家
class sample(t,s):# a =''def __init__(self,n,a,g,t1):t.__init__(self,n,a,g)s.__init__(self,n,a,t1)# 重写父类方法def speak(self):print("我叫%s,今年%d岁了,是一个%s的学生,我还是一个演说家,我今天演讲的主题是%s"%(self.name,self.age,self.grade,self.topic))if __name__ == '__main__':test = sample("jack",25,'大四',"Python")test.speak()   #方法名同,默认调用的是在括号中排前地父类的方法

执行代码,运行结果为:

我叫jack,今年25岁了,是一个大四的学生,我还是一个演说家,我今天演讲的主题是Python

有结果我们可以看出,类class_speaker中的方法并没有运行,因此每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。

转载于:https://blog.51cto.com/zhourj/1975080

Python基础,面向对象相关推荐

  1. python基础——面向对象的程序设计

    python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...

  2. python基础—面向对象

    python基础-面向对象 面向对象 面向过程VS面向对象 类和实例 实例变量和类变量 类的方法 实例方法 静态方法 类方法 面向对象的组合用法 封装.继承和多态 封装 继承 派生 方法的重写 继承注 ...

  3. 学Python基础面向对象看这一篇文章就够了【全网首推】

    目录 面相对象基础语法 目标 01. dir 内置函数(知道) 02. 定义简单的类(只包含方法) 2.1 定义只包含方法的类 2.2 创建对象 2.3 第一个面向对象程序 03. 方法中的 self ...

  4. [python基础] 面向对象——封装,继承

    面向对象 一.面向对象的基础知识 二.类和面向对象 三.封装 四.继承 (1).基本使用方法 (2).链表相加 (3).多继承 (4).私有属性与私有方法 一.面向对象的基础知识 1.面向对象 定义: ...

  5. Python基础-面向对象编程

    本文完全转载自廖雪峰大神的教程: 面向对象编程 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数 ...

  6. python基础 面向对象编程

    目录 面向对象编程 1.什么是面向对象编程? 面向过程编程思想 面向对象编程思想 2.什么是类?如何定义. 类: 对象 3.如何产生对象? 调用类时的事件: 4.对象属性的查找顺序: 5.类内部的函数 ...

  7. python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象...

    一.面向对象的软件开发有如下几个阶段                                              1.面向对象分析(object oriented analysis ,O ...

  8. Python基础-------面向对象二

    目录 一.封装 二.property装饰器 三.继承 四.多继承 五.方法的重写 super方法 一.封装 什么是封装 在日常中封装指的是将我们的物品包裹起来,不让看到其内部,具有保护的功能.在程序设 ...

  9. python基础--面向对象(一)

    面向对象的介绍 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计) 举例: 1)解决菜鸟买电脑的故事 第一种方式: 1)在网上查找资料 2)根据自己预算和 ...

  10. Python 基础--面向对象编程

    在至今我们编写的所有程序中,我们曾围绕函数设计我们的程序,也就是那些能够处理数据的代码块.这被称作*面向过程(Procedure-oriented)*的编程方式.还有另外一种组织起你的程序的方式,它将 ...

最新文章

  1. Linux日常命令使用记录
  2. 【机器学习基础】在机器学习项目中该如何选择优化器
  3. go语言for循环中修改临时变量无效
  4. 线程中这么调用类_这些线程知识总结是真的到位!java开发两年的我看的目瞪口呆
  5. hdu 5783——Divide the Sequence
  6. Python Imaging Library: ImageWin Module(图像Windows模块)
  7. SSH关于公钥认证Permission denied的问题
  8. hdu 1251 字典树,指针版
  9. 梁勇:展望 2017年商业智能BI 发展的趋势
  10. java utility工具类怎么导入_Utility.java
  11. PopupWindow底部弹出,底部UI被遮盖问题
  12. 「CTS2019」氪金手游
  13. 分享Silverlight/WPF/Windows Phone一周学习导读(1月3日-1月8日)
  14. memory_max_target/memory_target设置过大报ORA-00845错误
  15. list object has no attribute ZScan_书香家庭NO.31 | 成长路上飘书香
  16. 从东方财富网站获取动态市盈率和市净率的爬虫代码
  17. 炒股心得(每日更新)
  18. 1 spss基本使用
  19. 第一次的博客 告诫自己及目标
  20. 埃斯顿三轴机器人编程_第九期直播课程:埃斯顿机器人指令系统介绍

热门文章

  1. 「完结」总结12大CNN主流模型架构设计思想
  2. TensorFlow什么的都弱爆了,强者只用Numpy搭建神经网络
  3. 大众高层:中国将成为全球自动驾驶软件研发中心
  4. SAP MM Return Purchase Order之使用
  5. 干货丨深度学习、图像分类入门,从VGG16卷积神经网络开始
  6. (已解决)Jupyter Notebook使用argparse报错:An exception has occurred, use %tb to see the full traceback.
  7. 人工智能将如何改变芯片设计
  8. 【综述专栏】图神经网络综述
  9. 蕨叶形生物刷新生命史,动物界至少起源于5.7亿年前
  10. 自动驾驶技术之——虚拟场景数据库研究