博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面象对象语法
阅读量:7012 次
发布时间:2019-06-28

本文共 3750 字,大约阅读时间需要 12 分钟。

  • 类:就是一系列对角相似的特征与技能的结合体,但站在不同的角度,得到的分类也是不同的

在现实中:先有对象,才有类

在程序中:一定先定义类,后调用类来产生对象

'''在现实世界中:    对象1:王二丫        特征:            学校='luffycity'            名字='王二丫'            性别='女'            年龄=18        技能:            学习            吃饭            睡觉    对象2:李三炮        特征:            学校='luffycity'            名字='李三炮'            性别='男'            年龄=38        技能:            学习            吃饭            睡觉    对象3:张铁蛋        特征:            学校='luffycity'            名字='张铁蛋'            性别='男'            年龄=48        技能:            学习            吃饭            睡觉    总结现实中路飞学院的学生类:        相似的特征            学校='luffycity'        相似的技能            学习            吃饭            睡觉'''#定义类class LuffyStudent():    school = 'luffycity' #类的数据属性    def learn(self):#类的函数属性        pass    def eat(self):        pass    def sleep(self):        pass#产生对象stu1 = LuffyStudent()stu2 = LuffyStudent()stu3 = LuffyStudent()#查看类的名称空间# print(LuffyStudent.__dict__)#查print(LuffyStudent.school)#增# LuffyStudent.county = 'China'# print(LuffyStudent.county)#删# del LuffyStudent.county# print(LuffyStudent.county)#改LuffyStudent.school = 'Luffycity'print(LuffyStudent.school)

__init__方法

__init__方法主要用来为对象定制对象独有的特性

#定义类class LuffyStudent():    school = 'luffycity'    def __init__(self,name,age,sex):        self.name = name        self.age = age        self.sex = sex    def learn(self):        print('is learn')    def eat(self):        print('is eat')    def sleep(self):        print('is sleep')#产生对象stu1 = LuffyStudent('王二丫',29,'女')#先调用类产生空对象stu1,然后调用LuffyStudent.__init__(stu1,'王二丫',29,'女')stu2 = LuffyStudent('张三',18,'男')stu3 = LuffyStudent('李四',28,'女')#查# print(stu1.age)# #删# del stu1.age# print(stu1.age)#增stu1.class_name = 'Python开发'print(stu1.class_name)print(stu1.__dict__)#改stu1.age = 19print(stu1.age)

 属性查找

类有两种属性:

* 类的数据属性,属于对象共用的

print(id(stu1.school))print(id(stu2.school))print(id(stu3.school))#输出233691077611223369107761122336910776112

* 类的函数属性是绑定给对象使用的,称为绑定对象的方法

print(LuffyStudent.sleep)print(stu1.sleep)print(stu3.sleep)print(stu2.sleep)#输出
>
>
>

查找顺序

在obj.name会先从obj自己的名称空间里找name,找不到则去类中找,类也找不到就去父类里找,父类找不到就报错了

绑定方法

  • 类中定义的函数(没有被任何装饰器装饰的),其实主要是给对象使用的,而且是绑定到对象的,虽然所有对象指向的都是相同的功能,但是绑定到不同的对象就是不同的绑定方法
  • 绑定到对象的方法的特殊之处在于,绑定给谁就由谁来调用,谁来调用,就会将‘谁’本身当做第一个参数传给方法,即自动传值(方法__init__也是一样的道理)

在Python中一切皆对象,且python3中类与类型是一个概念,类型就是类

练习

练习1:编写一个学生类,产生一堆学生对象, (5分钟)

要求:

  1. 有一个计数器(属性),统计总共实例了多少个对象
class Student:    school = 'luffycity'    cont = 0    def __init__(self,name,age,sex):        self.name = name        self.age = age        self.sex = sex        Student.cont += 1    def learn(self):        passstu1 = Student('张三',18,'男')stu2 = Student('李四',18,'男')stu3 = Student('王五',18,'男')print(Student.cont)

练习2:模仿王者荣耀定义两个英雄类, (10分钟)

要求:

  1. 英雄需要有昵称、攻击力、生命值等属性;
  2. 实例化出两个英雄对象;
  3. 英雄之间可以互殴,被殴打的一方掉血,血量小于0则判定为死亡。
class zhugeliang:    camp = 'red'    def __init__(self,nickname,life_value,aggresivity):        self.nickname = nickname        self.life_value = life_value        self.aggresivity = aggresivity    def attack(self,enemy):        enemy.life_value -= enemy.aggresivity        if enemy.life_value <= 0:            print('%s已死亡!'%enemy.nickname)class xiaoqiao:    camp = 'blue'    def __init__(self,nickname,life_value,aggresivity):        self.nickname = nickname        self.life_value = life_value        self.aggresivity = aggresivity    def attack(self,enemy):        enemy.life_value -= enemy.aggresivity        if enemy.life_value <= 0:            print('%s已死亡!' % enemy.nickname)r1 = zhugeliang('诸葛亮',200,100)g1 = xiaoqiao('小乔',300,90)g1.attack(r1)g1.attack(r1)

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

转载于:https://www.cnblogs.com/yjiu1990/p/9122778.html

你可能感兴趣的文章
cobbler无人值守安装CentOS7
查看>>
win 2008 c盘空间不够怎么办
查看>>
VMware上多个CentOS使用宿主机上网、相互通讯
查看>>
oracle内存架构(三)
查看>>
nodejs tutorial - 2 加入模板 2015-3-23
查看>>
【String,StringBuffer和StringBuilder区别】
查看>>
十大编程算法助程序员走上高手之路
查看>>
拼团代付时出现缺少字段问题,添加字段的SQL语句
查看>>
Python 编写知乎爬虫实践
查看>>
CSharp基础知识2-选择语句
查看>>
wiki 的搭建和使用
查看>>
Linux下DRBD配置
查看>>
IP多播初步见解
查看>>
nginx屏蔽HEAD、PUT等请求
查看>>
Technical explanation of The MySpace Worm
查看>>
新闻列表标签
查看>>
消息队列技术点梳理(思维导图版)
查看>>
iOS9搜索功能说明
查看>>
PVS让存储颤抖,系列博文之四:PVS的写缓存新技术之XenApp方式实测篇
查看>>
Java调用python脚本以及会出现的问题
查看>>