面向对象程序设计

# 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法。
#对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。类就是一组相似特征事物的统称。
#面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:
#传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。
#面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的"机器",即对象。

定义和使用类

# 定义类采用class语句 ,语法为class ClassName:   #建议类的名称首字母大写,如果有多个,每个词首字母大写
#                               '''类的帮助信息'''
#                                statement             
class Geese:       #创建类'''大雁类'''pass
wildgoose = Geese()       #创建4只大雁
wildgoose1 = Geese()
wildgoose2 = Geese()
wildgoose3 = Geese()
# 创建__init__()方法 注意前后各两个下划线
class Geese:       #创建类'''大雁类'''def __init__(self): #定义构造方法print("大雁类")
wildgoose = Geese()     #创建大雁类的一个实例
wildgoose1 = Geese()    #再创建三个大雁类实例
wildgoose2 = Geese()
wildgoose3 = Geese()
大雁类
大雁类
大雁类
大雁类
class Geese:       #创建类'''大雁类'''def __init__(self,beak,wing,claw):    # 构造方法print("我是大雁类!我有以下特征:")print(beak)    # 输出喙的特征print(wing)    # 输出翅膀的特征print(claw)    # 输出爪子的特征
beak_1 = "喙的基部较高,长度和头部的长度几乎相等"    # 喙的特征
wing_1 = "翅膀长而尖"      # 翅膀的特征
claw_1 = "爪子是蹼状的"                # 爪子的特征
wildgoose = Geese(beak_1,wing_1,claw_1)     #创建大雁类特征一个实例
我是大雁类!我有以下特征:
喙的基部较高,长度和头部的长度几乎相等
翅膀长而尖
爪子是蹼状的
#在上面基础上,再增加一个飞行方法
class Geese:'''大雁类'''def __init__(self,beak,wing,claw):    # 构造方法print("我是大雁类!我有以下特征:")print(beak)    # 输出喙的特征print(wing)    # 输出翅膀的特征print(claw)    # 输出爪子的特征def fly(self,state):  # 定义飞行方法print(state)'''**************调用方法*********************'''beak_1 = "喙的基部较高,长度和头部的长度几乎相等"    # 喙的特征
wing_1 = "翅膀长而尖"      # 翅膀的特征
claw_1 = "爪子是蹼状的"                # 爪子的特征
wildGoose = Geese(beak_1,wing_1,claw_1)        # 创建大雁类的实例
wildGoose.fly("我飞行的时候,一会儿排成个人字,一会排成个一字")  # 调用实例方法
我是大雁类!我有以下特征:
喙的基部较高,长度和头部的长度几乎相等
翅膀长而尖
爪子是蹼状的
我飞行的时候,一会儿排成个人字,一会排成个一字
#上例中,飞行状态定义可以在函数里设置
class Geese:'''大雁类'''def __init__(self,beak,wing,claw):    # 构造方法print("我是大雁类!我有以下特征:")print(beak)    # 输出喙的特征print(wing)    # 输出翅膀的特征print(claw)    # 输出爪子的特征def fly(self,state = '我能飞'):  # 定义飞行方法,state此处可定义print(state)'''**************调用方法*********************'''beak_1 = "喙的基部较高,长度和头部的长度几乎相等"    # 喙的特征
wing_1 = "翅膀长而尖"      # 翅膀的特征
claw_1 = "爪子是蹼状的"                # 爪子的特征
wildGoose = Geese(beak_1,wing_1,claw_1)        # 创建大雁类的实例
wildGoose.fly()  # 前面函数已经定义,此处可不定义。
我是大雁类!我有以下特征:
喙的基部较高,长度和头部的长度几乎相等
翅膀长而尖
爪子是蹼状的
我能飞
# 创建数据成员并访问
class Geese:'''大雁类'''neck = "脖子较长"                       # 类属性(脖子)wing = "振翅频率高"                     # 类属性(翅膀)leg = "腿位于身份的中心支点,行走自如"  # 类属性(腿)def __init__(self):                     # 构造方法print(Geese.neck)    # 输出脖子的特征print(Geese.wing)    # 输出翅膀的特征print(Geese.leg)     # 输出腿的特征
beak_1 = "喙的基部较高,长度和头部的长度几乎相等"    # 喙的特征
wing_1 = "翅膀长而尖"      # 翅膀的特征
claw_1 = "爪子是蹼状的"                # 爪子的特征
wildGoose = Geese()        # 创建大雁类的实例
脖子较长
振翅频率高
腿位于身份的中心支点,行走自如
class Geese:'''大雁类'''neck = "脖子较长"                       # 类属性(脖子)wing = "振翅频率高"                     # 类属性(翅膀)leg = "腿位于身份的中心支点,行走自如"  # 类属性(腿)number = 0                              # 编号def __init__(self):                     # 构造方法Geese.number += 1                   # 将编号加1print("\n我是第"+str(Geese.number)+"只大雁,我属于雁类!我有以下特征:")print(Geese.neck)    # 输出脖子的特征print(Geese.wing)    # 输出翅膀的特征print(Geese.leg)     # 输出腿的特征# 创建4个雁类的对象(相当于有4只大雁)
list1 = []
for i in range(4):                         # 循环4次list1.append(Geese())                 # 创建一个雁类的实例
print("一共有"+str(Geese.number)+"只大雁")# 以下代码为添加类属性的代码,删除上下的三引号即可正常运行
Geese.beak = "喙的基部较高,长度和头部的长度几乎相等"  # 添加类属性
print("第2只大雁的喙:",list1[1].beak)    # 访问类属性
我是第1只大雁,我属于雁类!我有以下特征:
脖子较长
振翅频率高
腿位于身份的中心支点,行走自如我是第2只大雁,我属于雁类!我有以下特征:
脖子较长
振翅频率高
腿位于身份的中心支点,行走自如我是第3只大雁,我属于雁类!我有以下特征:
脖子较长
振翅频率高
腿位于身份的中心支点,行走自如我是第4只大雁,我属于雁类!我有以下特征:
脖子较长
振翅频率高
腿位于身份的中心支点,行走自如
一共有4只大雁
第2只大雁的喙: 喙的基部较高,长度和头部的长度几乎相等
#定义实例属性,注意例子是类属性
class Geese:'''大雁类'''def __init__(self):self.neck= "脖子较长"                       # 实例属性(脖子)self.wing = "振翅频率高"                     # 实例属性(翅膀)self.leg = "腿位于身份的中心支点,行走自如"  # 实例属性(腿)print("我属于大雁类,我有以下特征:")print(self.neck)   #访问实例属性print(self.wing)print(self.leg)
geese = Geese()  #实例化类的对象
我属于大雁类,我有以下特征:
脖子较长
振翅频率高
腿位于身份的中心支点,行走自如
#在类的对象以外使用
print(geese.leg)
腿位于身份的中心支点,行走自如
#不能通过类的名称访问
print(Geese.leg)    #报错
---------------------------------------------------------------------------AttributeError                            Traceback (most recent call last)<ipython-input-17-53b9361ae910> in <module>()1 #不能通过类的名称访问
----> 2 print(Geese.leg)AttributeError: type object 'Geese' has no attribute 'leg'
geese1 = Geese()
geese1.leg = "通过腿我可以行走"
print("geese:",geese.leg)
print("geese1:",geese1.leg)
我属于大雁类,我有以下特征:
脖子较长
振翅频率高
腿位于身份的中心支点,行走自如
geese: 腿位于身份的中心支点,行走自如
geese1: 通过腿我可以行走

Python 面向对象程序设计(一)相关推荐

  1. python面向对象程序设计实训学生自我总结_Python面向对象程序设计示例小结

    本文实例讲述了Python面向对象程序设计.分享给大家供大家参考,具体如下: 示例1: #encoding:utf-8 '''example 1 class test: def __init__(se ...

  2. python核心编程:Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解

    这篇文章主要介绍了Python面向对象程序设计中类的定义.实例化.封装及私有变量/方法,结合具体实例形式较为详细的分析了Python面向对象程序设计中类的定义.实例化.封装.私有变量.私有方法等相关使 ...

  3. python面向对象程序设计实践(初级)——以《三国演义》中三英大战吕布为例

    python面向对象程序设计实践(初级) --以<三国演义>中三英大战吕布为例 设计实现思路: 定义武器类:武器名,攻击力 定义人物类:继承武器类,姓名,生命值 延时函数:延时0.5秒 实 ...

  4. python面向对象程序设计实践(高级)——以《三国演义》中三英大战吕布为例

    python面向对象程序设计实践(初级) --以<三国演义>中三英大战吕布为例 设计实现思路: 设计类 定义武器类:武器名,攻击力 定义人物类:继承武器类,姓名,生命值 设计函数简化对象的 ...

  5. Python面向对象程序设计中对象析构方法的调用时机

    开学第一课:一定不要这样问老师Python问题 中国大学MOOC"Python程序设计基础"第6次开课时间 董付国老师Python系列教材推荐与选用参考 ============= ...

  6. python面向对象程序设计董付国ppt_(董付国)Python 学习笔记---Python面向对象程序设计(1)...

    面向对象程序设计 面向对象程序设计(Object Oriented Programming,OOP)主要针对大型软件设计而提出,使得软件设计更加灵活,能够很好地支持代码复用和设计复用,并且使得代码具有 ...

  7. python面向对象程序设计的三个特征_哪些是面向对象程序设计的三大特征

    展开全部 封装性.继承性.多态性. 1.封装性: 具备封装性(Encapsulation)的面向对象编程隐藏了某一方62616964757a686964616fe78988e69d8331333433 ...

  8. 学堂在线python面向对象程序设计试题_面向对象程序设计-中国大学mooc-试题题目及答案...

    面向对象程序设计-中国大学mooc-试题题目及答案 更多相关问题 [单选题]下面属于"新现实主义"社会题材的影片有( ). A. <小偷家族> B. <偷自行车的 ...

  9. Python面向对象程序设计期末考试复习题及答案(含编程题)

    一.选择题 1.关于面向过程和面向对象,下列说法错误的是(B). A.面向过程和面向对象都是解决问题的一种思路 B.面向过程是基于面向对象的 C.面向过程强调的是解决问题的步骤 D.面向对象强调的是解 ...

最新文章

  1. IT人应该具备的几种技能
  2. P7920-[Kubic]Permutation
  3. 利兹大学计算机硕士专业排名,2020年利兹大学数学与计算机科学硕士专业硕士申请条件-学费-世界排名...
  4. mysql 5.6.32 linux_centos7 下手动安装MySQL-5.6.32-1.linux_glibc2.5.x86_64.rpm-bundle
  5. dfs时间复杂度_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
  6. mysql root dengru_Mysql学习Mysql中文汉字转拼音的实现(每个汉字转换全拼)
  7. 网站禁止复制类型的属性
  8. android LocalActivityManager说明
  9. 点击按钮弹出Outlook(新建邮件状态)
  10. FeHelper ( 浏览器插件 )
  11. 【毕设教学】 经典单片机控制算法:PID - 嵌入式 物联网
  12. 据说是可减少50%交通事故的超越卓越经验
  13. 台式计算机时间跳动,电脑时间总是自动跳
  14. 惠普服务器win10安装系统教程,惠普电脑如何重装系统教程 win10专业版系统安装教程...
  15. Opencv python 直方图处理
  16. 抱薪者说 | 从零开始 ,社区年会诞生记
  17. 数字麦克风DMIC(上)
  18. Valley Blue Pasture《谷蓝尼牧场》签到可领大红包
  19. 一个简单的物流管理系统
  20. 怎么给word插入页码,详细图文教学,轻松学会

热门文章

  1. 软件工程学习总结(1)——软件测试工具详解
  2. Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
  3. 远程通信(RPC,Webservice,RMI,JMS、EJB、JNDI的区别)对比
  4. 圆章能随便刻吗_当归、人参、虫草熬成的养生汤,能随便销售吗?
  5. mysql之grant权限说明
  6. 21.5 windows_21_Library_use_DLL_Invoke 动态库补充5
  7. jsp a标签传值到action中,action接收不到传值
  8. 02_03 JSP内置对象之page
  9. 转载系列之一:浅析Hadoop文件格式
  10. 网管囧事系列二:又要杀毒,又要防***,网管怎样三头六臂?