全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python学习之面向对象【入门初级篇】

前言

最近在学习Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。

概述

  • python支持多种编程范式:面向过程、面向对象、面向切面(装饰器部分)等。
  • 面向过程:根据业务逻辑从上到下写垒代码
  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

OOP思想

  • 面向对象的基本哲学:世界由具有各自运动规律和内部状态的对象组成,对象之间相互作用和通讯构成了世界。
  • 唯一性,世界没有两片相同的树叶,同样的没有相同的对象。
  • 分类性,分类是对现实世界的抽象。
  • 三大特性:封装、继承和多态

面向对象的三大特性:

一、封装

封装,对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,即无法调用。

私有化:将类或函数中的某些属性限制在某个区域之内,外部无法调用。

Python中私有化的方法也比较简单,就是在准备私有化的属性(包括方法、数据)名字前面加双下划线。

例如:

class ProtectMe(object): 
 def __init__(self):
 self.me = "qiwsir"
 self.__name = "kivi"
 
 def __python(self):
 print("I love Python.") 
 
 def code(self):
 print9"Which language do you like?")
 self.__python()
 
if __name__ == "__main__":
 p = ProtectMe()
 print(p.me)
 print(p.__name)
 
#运行结果
qiwsir
Traceback (most recent call last):
 File "21102.py", line 21, in <module>
 print p.__name
AttributeError: 'ProtectMe' object has no attribute '__name' 

说明:__name属性隐藏了,无法调用。

调用私有属性,可以使用property函数

class ProtectMe(object): 
 def __init__(self):
 self.me = "qiwsir"
 self.__name = "kivi"
 
 @property
 def name(self):
 return self.__name
 
if __name__ == "__main__":
 p = ProtectMe()
 print(p.name)

#运行结果
 kivi 

所以,在使用面向对象的封装特性时,需要:

  • 将内容封装到某处
  • 从某处调用被封装的内容

第一步:将内容封装到某处

 self 是一个形式参数,当执行 obj1 = Foo('wupeiqi', 18 ) 时,self 等于 obj1

                              当执行 obj2 = Foo('alex', 78 ) 时,self 等于 obj2

所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都有 name 和 age 属性,在内存里类似于下图来保存。

第二步:从某处调用被封装的内容

调用被封装的内容时,有两种情况:

  • 通过对象直接调用
  • 通过self间接调用
class Role(object):
 ac = None #类变量
 def __init__(self,name,role,weapon,life_value):
 #初始化方法
 self.name = name #实例变量(成员变量)
 self.role = role
 self.weapon = weapon
 self.life_val = life_value
 
 def buy_weapon(self,weapon): #定义方法
 #self:表示实例本身
 self.weapon = weapon
 # print("%s is buying [%s]" %(self.name,weapon))
 
#把一个抽象的类变成一个具体的对象的过程,叫实例化
 
p1 = Role("sanjiang",'Police',"B10",90) #实例
t1 = Role("Chunyun",'Terrorist',"B11",100)

二、继承

继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

class SchoolMember(object):
 # member_nums = 0
 def __init__(self,name,age,sex):
 self.name = name
 self.age = age
 self.sex = sex
 # self.enroll()
 
 def enroll(self):
 SchoolMember.member_nums += 1
 print("SchoolMember [%s] is enrolled!" %self.name)
 
 def tell(self):
 print("Hello my name is [%s]" %self.name)
 
class Teacher(SchoolMember):
 def __init__(self,name,age,sex,course,salary): #重写父类的__init__方法
 super(Teacher,self).__init__(name,age,sex) #继承(新式类)
 # SchoolMember.__init__(self,name,age,sex) #继承(旧式类)
 self.course = course
 self.salary = salary
 
 def teaching(self):
 print("Teacher [%s] is teaching [%s]" %(self.name,self.course))
 
 
 
class Student(SchoolMember):
 def __init__(self,name,age,sex,course,tuition):
 super(Student,self).__init__(name,age,sex)
 self.course = course
 self.tuition = tuition
 
 def pay_tuition(self):
 print("ca,student [%s] paying tuition [%s] again" %(self.name,self.tuition))

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# python  # 面向对象  # python面向对象编程  # python面向对象实例  # Python面向对象程序设计OOP深入分析【构造函数  # 组合类  # 工具类等】  # Python面向对象程序设计OOP入门教程【类  # 实例  # 继承  # 重载等】  # Python面向对象编程基础解析(一)  # 简述Python中的面向对象编程的概念  # 浅谈Python面向对象编程oop思想心得  # 三大  # 是一个  # 这一  # 下划线  # 相互作用  # 重写  # 更快  # 可以使用  # 这篇文章  # 有两种  # 更强  # 类似于  # 中都  # 第二步  # 两片  # 接触过  # 进行分类  # 日后  # 从上到下 


相关文章: 公司网站设计制作厂家,怎么创建自己的一个网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何访问已购建站主机并解决登录问题?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何配置WinSCP新建站点的密钥验证步骤?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  ,交易猫的商品怎么发布到网站上去?  网站制作员失业,怎样查看自己网站的注册者?  一键网站制作软件,义乌购一件代发流程?  招贴海报怎么做,什么是海报招贴?  网站制作公司排行榜,抖音怎样做个人官方网站  建站之星在线客服如何快速接入解答?  建站为何优先选择香港服务器?  如何基于PHP生成高效IDC网络公司建站源码?  如何构建满足综合性能需求的优质建站方案?  制作农业网站的软件,比较好的农业网站推荐一下?  seo网站制作优化,网站SEO优化步骤有哪些?  5种Android数据存储方式汇总  网站app免费制作软件,能免费看各大网站视频的手机app?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  建站上传速度慢?如何优化加速网站加载效率?  如何快速搭建高效服务器建站系统?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Swift开发中switch语句值绑定模式  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何快速使用云服务器搭建个人网站?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  如何快速打造个性化非模板自助建站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  ,巨量百应是干嘛的?  宁波免费建站如何选择可靠模板与平台?  Python如何创建带属性的XML节点  高防服务器租用指南:配置选择与快速部署攻略  如何在阿里云购买域名并搭建网站?  建站之星logo尺寸如何设置最合适?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  如何在景安服务器上快速搭建个人网站?  C#如何序列化对象为XML XmlSerializer用法  建站之星免费模板:自助建站系统与智能响应式一键生成  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  活动邀请函制作网站有哪些,活动邀请函文案?  如何在云虚拟主机上快速搭建个人网站?  如何快速搭建响应式可视化网站?  IOS倒计时设置UIButton标题title的抖动问题  定制建站是什么?如何实现个性化需求? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。