初识面向对象(理论1)
2019独角兽企业重金招聘Python工程师标准>>>
一:类和对象
类就是一类事物
对象:具体的事物
比如人是一类,而具体叫某某名字的是对象
在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是‘类’,对象是则是这一类事物中具体的一个。
一:初识
声明一个类 class小写。类名大写加:,()可写可不写
class Person: #定义一个人类 Person是类名 role = 'person' #人的角色属性都是人 def walk(self): #人都可以走路,也就是有一个走路方法,也叫动态属性 print("person is walking...")
类的两种作用:属性引用和实例化
一:属性引用(类名.属性)
class Person: # 定义一个人类 role = 'person' # 人的角色属性都是人 def walk(self): # 人都可以走路,也就是有一个走路方法 print("person is walking...")print(Person.role) # 查看人的role属性 print(Person.walk) # 引用人的走路方法,注意,这里不是在调用
二:加强版(类作用,理论知识)
class Person: # 类名 Person role = '人' # 类的静态变量 是所有的对象共享的一个属性 def attack(self):pass print(Person.role) # 类提供给我们的调用方式 print(Person.attack) Person.role = '中国人' print(Person.role) Person.attack() # 报错 print(Person.__dict__) # 存储方式 print(Person.__dict__['role']) print(Person.__dict__['attack']) Person.__dict__['role'] = '人' 类只有两个作用: 1.使用类中的名字查看类中的名字: 类名.变量名 # 可以修改变量的值 类名.__dict__['变量名'] # 不能修改 2.创造对象 实例化对象对象就是实例,一个实际的例子对象 = 类名() class Person: # 类名 Person role = '人' # 类的静态变量 是所有的对象共享的一个属性 def __init__(self,name,sex,aggr,hp): #{} self.name = name self.sex = sex self.aggr = aggr self.hp = hp def attack(self): print(self.name)print(self.sex)obj1 = Person('alex','female',250,1) obj2 = Person('egon','male',500,2) print(obj1.name,obj1.sex,obj1.aggr,obj1.hp) print(obj2.name,obj2.sex,obj2.aggr,obj2.hp) print(obj1.__dict__) print(obj2.__dict__) print(obj1) Person.attack(obj1) # 调用一个类中的方法了 obj1.attack() 对象的具体: 内存地址的不一致不同的对象 属性的值应该不同类名(参数)创造一个空对象 : self调用__init__方法 : 初始化方法把参数传给__init__方法完成init方法中的代码自动将self返回给实例化的地方self就是对象调用类中的方法 : 类名.方法名(对象)对象名.方法名()
三:总结
#初始面向对象 ''' class Person: role = '人' # 类的静态变量 是所有的对象共享的一个属性 def __init__(self): pass def attack(self): 1.类:一类事务,如人,电脑等 对象:一个具体的事务,如小明,小明的手机 2.定义一个类:class Person(): 类名 Person 首字母要大写 ()可写可不写 在类中添加共用属性 role = '人' 类的静态变量 是所有的对象共享的一个属性 在调用时用 print(Person.role) 3.查看类中的名字: 3.1 print(Person.role) 类提供给我们的调用方式 可以进行修改 如Person.role = '中国人' 3.2 print(Person.__dict__) 类提供的存储方式 会将类中的所有名字和方法均显示出来 print(Person.__dict__['role']) 4.类只有两个作用: 4.1.使用类中的名字 查看类中的名字:1. 类名.变量名 # 可以修改变量的值 2.类名.__dict__['变量名'] # 不能修改 4.2.创造对象 实例化对象 对象就是实例,一个实际的例子 对象 = 类名() #obj1=person() 5.实例化: 1.obj1 = Person('alex','female',1,250) # 实例化 先创造对象 再初始化 print(obj1.name,obj1.sex,obj1.aggr,obj1.hp) print(obj2.name,obj2.sex,obj2.aggr,obj2.hp) print(obj1.__dict__) 2.调用__init__方法 : 初始化方法 def __init__(self,name,sex,aggr,hp): #方法 动态属性 内置的双下方法 self就是对象 self.name = name self理解为等于一个空字典,self={} self.name中name为key值,等号右边的为value值 self.sex = sex name,sex等均为属性 self.aggr = aggr self.hp = hp 6.对象的具体: print(obj1) #object at 0x000001B8F1378A90> print(obj2) #object at 0x000001B8F1378AC8> 1.内存地址的不一致 2.不同的对象 属性的值应该不同 7.类名(参数) 1.创造一个空对象 : self(即obj1) 2.调用__init__方法 : 初始化方法 3.把参数传给__init__方法 4.完成init方法中的代码 5.自动将self返回给实例化的地方 self就是对象 8.调用类中的方法 : def attack(self): # 自定义方法 print(self.name) 1.类名.方法名(对象) Person.attack(obj1) 2.对象名.方法名() obj1.attack() def attack(self):self就是obj1 9.使用面向对象的步骤: 1.完成类 首先分析一下角色和类 类里面有哪些属性 init方法 再分析这个类中能有哪些行为 定义为方法 2.实例化 传参数获取实例化之后的对象 1.首先创造对象, 2.执行init方法 3.对象的调用:使用对象调用对象属性和类中的方法 对象名的作用: 1.使用变量 对象名.属性名 obj1.name 2.调用方法 对象名.方法名() obj1.attack() ''' ####人狗大战 class Person: # 类名 Person role = '人' # 类的静态变量 是所有的对象共享的一个属性 def __init__(self,name,sex,aggr,hp): #方法 动态属性 内置的双下方法 self.name = name # 对象属性 实例属性 self.sex = sex self.aggr = aggr self.hp = hp def attack(self,dog): # 自定义方法 print('%s打了%s'%(self.name,dog.name))dog.hp -= self.aggrclass Dog: def __init__(self,name,kind,aggr,hp): self.name = name # 对象属性 self.kind = kind self.aggr = aggr self.hp = hp def bite(self,person): print('%s咬了%s'%(self.name,person.name))person.hp -= self.aggr hei = Dog('小黑','teddy',260,10000) # 实例化: 先创造对象 再初始化 alex = Person('alex','female',1,250) # 实例化 egon = Person('egon','male',2,500) # 实例化 alex.attack(hei) # Person.attack(alex,hei) egon.attack(hei) # Person.attack(alex,hei) print(hei.hp) hei.bite(alex) print(alex.hp) # # ##根据半径求圆面积## # from math import pi # class Circle: # def __init__(self,r): # self.r=r # def area(self): # return self.r**2*pi # def perimeter(self): # return self.r*2*pi # circle=Circle(5) # print(circle.area()) # print(circle. perimeter()) # ###小明,老王### # ''' # 小明,男,10岁,上山去砍柴 # # 小明,男,10岁,开车去东北 # # 小明,男,10岁,最爱大保健 # # 老张,男,90岁,上山去砍柴 # # 老张,男,90岁,开车去东北 # # 老张,男,90岁,最爱大保健 # # 老王,男,70岁,上山去砍柴 # ''' # class Person: # def __init__(self,name,sex,aggr): # self.name=name # self.sex = sex # self.aggr = aggr # def attack(self): # print("%s%s%s上山去砍柴"%(self.name,self.sex,self.aggr )) # print("%s%s%s开车去东北" % (self.name, self.sex, self.aggr)) # print("%s%s%s最爱大保健" % (self.name, self.sex, self.aggr)) # obj1=Person("小明","男",10) # obj1.attack() # obj2=Person("老王","男",90) # obj2.attack() # obj3=Person("老张","男",75) # ###方法二### # class Person: # def __init__(self,name,sex,age): # self.name = name # self.age = age # self.sex = sex # def dirve(self): # print('%s,%s,%s岁,开车去东北'%(self.name,self.sex,self.age)) # def climb(self): # print('%s,%s,%s岁,上山去砍柴'%(self.name,self.sex,self.age)) # def hobby(self): # print('%s,%s,%s岁,最爱大保健'%(self.name,self.sex,self.age)) # ming = Person('小明','男',10) # ming.dirve() # ming.climb() # ming.hobby() # zhang = Person('老张','男',90) # zhang.dirve() # zhang.climb() # zhang.hobby()
转载于:https://my.oschina.net/u/3657436/blog/1630022
初识面向对象(理论1)相关推荐
- 16.1、python初识面向对象(1)
初识面向对象 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人 ...
- Python初识面向对象
一.Python初识面向对象 1.1 封装 class Person:country='中国' #静态字段,可以直接调用def __init__(self,name,pwd): #Python类自带的 ...
- 网工学Python——初识面向对象
阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...
- Java基础-初识面向对象编程(Object-Oriented-Programming)
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
- learn_Day14 内置函数补充、反射、初识面向对象
内置函数 __import__()用于导入模块 getattr 用于寻找模块的指定对象 a = __import__('b') # b为模块名,b是字符串 ==>> 导入模块b并重新命名 ...
- 第一小节 初识面向对象
阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...
- JavaScript基础——第四章,JavaScript对象及初识面向对象
文章目录 JavaScript对象及初识面向对象 1.对象 1.1 对象的概念 1.2 内置对象 1.3 自定义对象 1.3.1 操作符new创建对象 1.3.2 使用字面量赋值的方式定义对象 2.构 ...
- 第十章 初识面向对象
第十章 初识面向对象 1.面向对象思想的引入 例:公司需要开发一款人狗大战的游戏 需要两个角色:人 狗 人的属性:昵称.性别.生命值.战斗力.背包 狗的属性:昵称.品种.生命值.战斗力 再尚未学习面向 ...
- python人狗大战游戏_day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
- day22~day23初识面向对象
python之路--初识面向对象 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同 ...
最新文章
- ***检测与防护(IDS/IPS)
- Mac OSX 10.9下apache+php+mysql的配置
- [转]MySQL 5.6 my.cnf配置优化
- 7-17 BCD解密(10 分)
- CMake编译opencv
- 【NOIP2016提高A组五校联考2】running
- 协同进化遗传算法 代码_遗传算法在组卷中的应用
- 两种简单高效的“反人脸识别”方法
- Learn OpenGL(一)图形渲染管线(Pipeline)
- 谷歌强烈推荐!浏览器助手,让你的浏览器至少提升10个档次!
- 冰点文库下载器V3.1.4
- python 中文分析句子成分_中文句子结构分析
- 中兴新支点操作系统_中兴新支点操作系统的设计和功能怎样?
- pipe()函数详解
- 彪悍的人生不需要解释!
- 虐心的《西部世界》第二季:我看哭了 人类和AI傻傻分不清
- ikbc键盘win键失灵原因
- 专升本英语——应试题型突破——翻译——名言警句【学习笔记】
- 熊大微评微内核|华为“鸿蒙”所涉及的微内核究竟是什么?
- 20110822炒股日记--进入筑底阶段
热门文章
- c语言各种变量的优缺点,C语言优缺点
- mvcc原理_MVCC原理探究及MySQL源码实现分析
- 牛客假日团队赛5J	护城河 bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 (凸包的周长)...
- css3中的 @Keyframes
- MySQL必知必会(使用子查询)
- js jQuery取消添加超链接的方法小结
- 3、PV、UIP、UV指的是什么
- 面向对象上机题-迭归算法
- mysql数据库迁移到另一台电脑上
- C#中修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限