python3对象初始化_Python 面向对象概念 类和对象 对象初始化__init__ 绑定与非绑定...
面向对象 (Object Oriented Programming,简称OOP)
1.什么是面向对象:面向对象编程是一种思想,它指导程序员如何编写出更好的程序。它的核心是对象,此时程序员从操作者变成了指挥者。
2.为什么使用面向对象编程:当今时代背景下,通常应用程序对扩展性和维护性要求都是非常高的,为什么?想想qq,微信,是不是不断的在添加新功能?,也就是说一款应用程序诞生后,都需要不断的更新维护。
3.面向对象优缺点:
优点:拓展性 灵活性 重用性
缺点: 程序的复杂度提高了 无法准确的预知程序的执行结果
4.应用场景:对拓展性要求高的程序,一般是直接面向用户的如:qq 微信
面向过程
1.什么是面向过程:也是一种编程思维,他的核心是过程就是一步步的执行步骤(先干什么,在干什么),面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式。
2.面向过程的优缺点:
优点:逻辑清晰 复杂问题简单化,流程化
缺点:拓展性差 可维护性差
3.应用场景:对拓展性要求低的程序如:系统内核
注意:程序是选择面向对象还是面向程序,主要是根据具体需求来选择
类和对象初识
1.类:是一种抽象的概念,是具备相同特征和相同行为对象的集合体。如人类,鱼类等。
2.对象:是具体存在的事物,具备自己的特征和行为。对象就是特征和技能的结合体。
注意:现实生活中先有对象后有类 程序中是先有类后有对象。
在使用面向对象编程时,第一步就是思考需要什么样的对象,对象具备什么样的特征和行为,从而根据 这些信息总结出需要的类型
python中的类和对象
1.定义类的语法:
class类的名称:#类中的内容 描述属性和技能
#描述属性用变量
#描述行为用函数
#类名称 书写规范 首先是见名知意 名称是大驼峰命名法#驼峰就是单词首字母大写 , 大驼峰是第一个字母大写,小驼峰是第一个字母小写
View Code
2.创建对象语法
classPerson:pass
#创建对象
p = Person()
View Code
3.类中和对象中属性的区别
属性可以写在类中
类中的属性,是所有对象公共的
也可以写在对象中
对象中的属性,是每个对象独特的(不一样的)
如果类中和对象中存在同样的属性,先访问对象 如果没有在访问类
练习: 描述一个老师类 需要包含 一个公共属性和 一个独特的属性classTeacher:
school= "oldboy"t1=Teacher()
t1.name= "jack"t1.age= 28
View Code
4.对象属性的 增 删 改 查
1.增加属性
对象变量名称.属性名称=属性值2.删除属性del对象的变量名称.属性名称3.修改
对象.属性=新的值4.查看属性 访问的是对象的所有属性(只能访问到实行的名称空间和类无关)#print(对象.__dict__)
classTeacher:
school= "oldboy"t1=Teacher()
t1.name= "jack"t1.age= 28
print(t1.__dict__) #{'name': 'jack', 'age': 28}
访问对象的类信息#print(对象.__class__)
print(t1.__class__) #
View Code
python中的初始化__init__
1.什么是初始化方法:用于为对象的属性设置初始值的函数
2.__init__ 事例和特点
classDog:def __init__(self,kind,color,age):
self.kind=kind
self.color=color
self.age=ageprint(d1.kind) #二哈
print(d2.kind) #泰迪
#注意:1.当实例化 对象时,会自动执行init方法(注意与元类中__init__区分开来)
2.会自动将对象作为第一个参数传入,参数名称位self ,self可以是别的名字,但不建议改3.该函数不能有任何返回值/.... 只能是None 规定如此..4.有了`__init__`方法,在创建实例的时候,就不能传入空的参数了,必须传入与 `__init__`方法匹配的参数,但`self`不需要传,Python解释器自己会把实例变量传进去:
View Code
类和对象的属性查找顺序
属性查找顺序:对象->类->父类
绑定与非绑定
对象的精髓就是将数据和处理数据的函数整合到一起 ,这样一来拿到一个对象就同时拿到了需要处理的数据以及处理数据的函数
1.对象绑定(将对象与方法进行绑定)
#练习:写一个学生类,具备一个打招呼的技能 要能输出自己的名字信息
classStudent:def __init__(self,name):
self.name=namedefsay_hi(self):print("hello my name is %s" %self.name)
s1= Student('jack')#对象调用
s1.say_hi() #hello my name is jack#类调用
Student.say_hi(s1) #hello my name is jack
#默认情况下类中的方法都是对象绑定方法
#其特殊之处在于,
当使用对象调用该函数时会自动传入对象本身,作为第一个参数
当使用类名来调用时他就是一个普通函数,有几个参数就得传几个参数
View Code
2.类绑定(将类与方法进行绑定)
classOldBoyStudent:
school= "oldboy"
def __init__(self,name):
self.name=name
@classmethoddefshow_school(cls):print(cls.school)print(cls)
@staticmethoddefprint_hello():print("hello world")#类调用
OldBoyStudent.show_school() #oldboy
#对象调用
stu = OldBoyStudent("jack")
stu.show_school()## oldboy
类绑定方法用@classmethod来装饰
特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数
什么时候绑定给对象:当函数逻辑需要访问对象中的数据时
什么时候绑定给类:当函数逻辑需要访问类中的数据时
View Code
3.静态绑定(非绑定)
classOldBoyStudent:
school= "oldboy"
def __init__(self,name):
self.name=name
@staticmethoddefprint_hello():print("hello world")#对象调用
tu = OldBoyStudent("jack")
stu.print_hello(18) #年龄 18
#类调用
OldBoyStudent.print_hello(18) #年龄 18
也叫做静态方法,就是即不需访问类的数据,.也不需要访问对象的数据
语法:@staticmethod
不常用:无论是类调用还是对象调用有几个参数就传几个参数
View Code
4.练习
"""需求设计王者荣耀中的英雄类,每个英雄对象可以对其他英雄对象使用技能
具备以下属性
英雄名称,等级,血量
和Q_hurt,W_hurt,E_hurt 三个属性,表示各技能的伤害量
具备以下技能
Q W E
三个技能都需要一个敌方英雄作为参数,当敌方血量小于等于0时角色死亡
涉及到英雄对象
属性:
名字 等级 血量
行为:
Q W E
需要一个英雄类"""
classHero:def __init__(self,name,level,HP,Q_hurt,W_hurt,E_hurt):
self.name=name
self.level=level
self.HP=HP
self.Q_hurt=Q_hurt
self.W_hurt=W_hurt
self.E_hurt=E_hurtdefQ(self,enemy):print("%s 对 %s 释放了 Q技能 造成了%s伤害" %(self.name,enemy.name,self.Q_hurt))
self.attack(enemy, self.Q_hurt)defW(self,enemy):print("%s 对 %s 释放了 W技能 造成了%s伤害" %(self.name, enemy.name, self.W_hurt))
self.attack(enemy, self.W_hurt)defE(self,enemy):print("%s 对 %s 释放了 E技能 造成了%s伤害" %(self.name, enemy.name, self.E_hurt))
self.attack(enemy,self.E_hurt)defattack(self,enemy,hurt):
enemy.HP-=hurtif enemy.HP <=0:print("%s 已被%s击杀" %(enemy.name, self.name))#创建两个英雄对象
arso = Hero("亚瑟","15",1000,30,500,200)
dj= Hero("妲己","15",800,300,10,800)#
#dj.W(arso)#dj.Q(arso)#dj.E(arso)
arso.Q(dj)
arso.W(dj)
arso.E(dj)
dj.W(arso)
dj.Q(arso)
dj.E(arso)
View Code
5.补充:
__doc__:注释
对象.__class__:访问对象类信息
类名.__name__:查看类名
View Code
python3对象初始化_Python 面向对象概念 类和对象 对象初始化__init__ 绑定与非绑定...相关推荐
- python对象和类区别_python面向对象(类与对象)
面向对象思想 关注公众号"轻松学编程"了解更多. 1.面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点. 2.面向对象和面向过程的区别 面向过程 在生活中: 它是一种看待问 ...
- python数据库连接类写其他类调用报超时_python面向对象,类,以及连接数据库
## 面向对象 ### 1.面向对象三大特性: 封装,继承,多态 ### 1.1.封装 1.在类中对数据的赋值.内部调用对外部用户是透明的 2.这使类变成了一个胶囊或容器,里面包含着类的数据和方法 3 ...
- python中的类属性和类方法_Python 面向对象,类的属性和 类的方法
面向对象,类的属性和 类的方法 面向对象 类和对象 Python类定义 类属性 类方法 面向过程和面向对象 面向过程 和 面向对象 编程 面向过程 编程:函数式编程,C程序,shell等 面向对象 编 ...
- python类和对象介绍_python中的类,对象,方法,属性等介绍
注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...
- ES6对象(2):面向对象与类
目录 一.面向对象简介 二.类(构造函数的语法糖) 1.传统的构造函数的问题 2.类的特点 三.类的其他书写方式 1.可计算的成员名 2.getter和setter 3.静态成员 4.字段初始化器 5 ...
- python的类和实例_Python 面向对象编程——类和实例
1面向对象编程 面向对象编程: 面向对象编程--Object OrientedProgramming OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程 ...
- python编程语言继承_Python面向对象程序设计类的封装与继承用法示例
本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义 ...
- python和对象复习_python 面向对象基础和高级复习
面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...
- Spark 基础 —— class与object,面向对象、类与伴生对象(companion object)
0. scala 中的面向对象 静态方法与静态字段: scala 中没有 static 关键字,但可使用 object 关键字加类名的语法结构实现: 通过 object + 类名,可以实现: 工具类: ...
最新文章
- SAP采购订单下传SRM
- 调用另一个Activity
- shell script
- Makefile文件和shell脚本
- [论文收集] ICSOC 2008 论文
- Ext JS 5初探(二) ——Bootstrap.js
- PDFMiner:python 读取 pdf 内容
- 服务器部署docker
- PAT乙级 1003
- js判断页面点击事件
- php可以在dw中吗,php新手求助,为什么在DW中设计里能看到运行php程序的结果,但…...
- C语言简单连点器网课必备
- 【Javascript】入门之QQ列表的实现
- 无线路由器服务器连接线,无线路由器连接有线路由器怎么设置?
- MySQL之——基本操作汇总
- github数据怎么Python爬取
- 中国各大论坛链接地址(部分需要邀请码,稍感遗憾)!
- 加载疑难解答向导无法继续怎么办?
- javascript简易留言板制作 -- 案例
- 各种场合的说话技巧之19例
热门文章
- python shell如何打开_“python shell怎么打开“python shell启动教程
- 本科生学深度学习,搭建环境,再不入坑就晚了
- 15年终结 16计划+移动设备设计趋势思维导图模板
- JMeter jp@gc - PerfMon Metrics Collector插件
- 用VB6+GDI+开发交互式CAD系统
- 节省时间、提高效率,ECRS工时分析软件助您创造更多价值
- MWC厂商爆料:5G手机明年面世
- iscsi 挂载教程_iscsi挂载步骤
- linux yum安装iscsi,安装Linux iscsi组件
- 中如何让图片上下居中_WPS应用技巧—如何使图片在文档中随意移动