Python基础,面向对象
几个名词知识:
类(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基础,面向对象相关推荐
- python基础——面向对象的程序设计
python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
- python基础—面向对象
python基础-面向对象 面向对象 面向过程VS面向对象 类和实例 实例变量和类变量 类的方法 实例方法 静态方法 类方法 面向对象的组合用法 封装.继承和多态 封装 继承 派生 方法的重写 继承注 ...
- 学Python基础面向对象看这一篇文章就够了【全网首推】
目录 面相对象基础语法 目标 01. dir 内置函数(知道) 02. 定义简单的类(只包含方法) 2.1 定义只包含方法的类 2.2 创建对象 2.3 第一个面向对象程序 03. 方法中的 self ...
- [python基础] 面向对象——封装,继承
面向对象 一.面向对象的基础知识 二.类和面向对象 三.封装 四.继承 (1).基本使用方法 (2).链表相加 (3).多继承 (4).私有属性与私有方法 一.面向对象的基础知识 1.面向对象 定义: ...
- Python基础-面向对象编程
本文完全转载自廖雪峰大神的教程: 面向对象编程 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数 ...
- python基础 面向对象编程
目录 面向对象编程 1.什么是面向对象编程? 面向过程编程思想 面向对象编程思想 2.什么是类?如何定义. 类: 对象 3.如何产生对象? 调用类时的事件: 4.对象属性的查找顺序: 5.类内部的函数 ...
- python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象...
一.面向对象的软件开发有如下几个阶段 1.面向对象分析(object oriented analysis ,O ...
- Python基础-------面向对象二
目录 一.封装 二.property装饰器 三.继承 四.多继承 五.方法的重写 super方法 一.封装 什么是封装 在日常中封装指的是将我们的物品包裹起来,不让看到其内部,具有保护的功能.在程序设 ...
- python基础--面向对象(一)
面向对象的介绍 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计) 举例: 1)解决菜鸟买电脑的故事 第一种方式: 1)在网上查找资料 2)根据自己预算和 ...
- Python 基础--面向对象编程
在至今我们编写的所有程序中,我们曾围绕函数设计我们的程序,也就是那些能够处理数据的代码块.这被称作*面向过程(Procedure-oriented)*的编程方式.还有另外一种组织起你的程序的方式,它将 ...
最新文章
- Linux日常命令使用记录
- 【机器学习基础】在机器学习项目中该如何选择优化器
- go语言for循环中修改临时变量无效
- 线程中这么调用类_这些线程知识总结是真的到位!java开发两年的我看的目瞪口呆
- hdu 5783——Divide the Sequence
- Python Imaging Library: ImageWin Module(图像Windows模块)
- SSH关于公钥认证Permission denied的问题
- hdu 1251 字典树,指针版
- 梁勇:展望 2017年商业智能BI 发展的趋势
- java utility工具类怎么导入_Utility.java
- PopupWindow底部弹出,底部UI被遮盖问题
- 「CTS2019」氪金手游
- 分享Silverlight/WPF/Windows Phone一周学习导读(1月3日-1月8日)
- memory_max_target/memory_target设置过大报ORA-00845错误
- list object has no attribute ZScan_书香家庭NO.31 | 成长路上飘书香
- 从东方财富网站获取动态市盈率和市净率的爬虫代码
- 炒股心得(每日更新)
- 1 spss基本使用
- 第一次的博客 告诫自己及目标
- 埃斯顿三轴机器人编程_第九期直播课程:埃斯顿机器人指令系统介绍
热门文章
- 「完结」总结12大CNN主流模型架构设计思想
- TensorFlow什么的都弱爆了,强者只用Numpy搭建神经网络
- 大众高层:中国将成为全球自动驾驶软件研发中心
- SAP MM Return Purchase Order之使用
- 干货丨深度学习、图像分类入门,从VGG16卷积神经网络开始
- (已解决)Jupyter Notebook使用argparse报错:An exception has occurred, use %tb to see the full traceback.
- 人工智能将如何改变芯片设计
- 【综述专栏】图神经网络综述
- 蕨叶形生物刷新生命史,动物界至少起源于5.7亿年前
- 自动驾驶技术之——虚拟场景数据库研究