初识面向对象
Posted systemsystem
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识面向对象相关的知识,希望对你有一定的参考价值。
- 初识类
- 静态类
- 类的作用
- 对象之间交互
一 如何创建一个类:(具有相同属性和方法的同一类事物)
class Data: # 注意类名首字母要大些(规定) 关键字 class def __init__(self,a) # 这是一个内置方法,self是一块内存空间 后面可以跟参数按顺序)
delf.a=a
dog=Data(‘咬人‘) # 类名加括号就相当于执行类中的__init__方法
二 看例子
class Data: country = ‘china‘ # 类的属性 ,静态属性(所有这个类都共同的属性) def __init__(self,a): self.name=a # 此时这里的self.name=a就是以一个字典的键值对的形式存放的 {‘name‘: ‘张三‘} print(self) # 此时打印的跟print(dog)的是一个内存地址 dog=Data(‘张三‘) print(dog.name) # 这是查看属性 print(dog) # 此时打印的跟print(self)的是一个内存地址 print(dog.__dict__) # 查看类中所有的属性 {‘name‘: ‘张三‘} 字典的形式 dog.sex=‘男‘ # 增加属性 print(dog.sex) print(dog.__dict__) #{‘name‘: ‘张三‘, ‘sex‘: ‘男‘} # del dog.sex # 删除属性 # print(dog.sex) # Data‘ object has no attribute ‘sex‘ 对象中没有该属性 dog.name=‘李四‘ # 修改属性 print(dog.name) # 李四
小总结:
类名作用: 实例化对象 -调用类中的静态属性 (也可以进行操作) 实例化的过程: 1 创建一个属于对象的空间 2 将这个空间的地址和参数传递给__init__方法 3执行init方法 4 将对象的空间返回给对象名 静态属性: 所有这个类都有的共同属性 对象能做什么; 调用对象的属性 (对象名点属性名) 调用对象中的方法(动态方法) (对象名点方法名或者类名点方法名推荐使用前者,就跟一个函数一样,不过返回值取得时候
print(对象名点方法名(),也可以传参但他会默认自带一个self,次self可以调用其本身的属性,其后也可以传其他对象用于相互交互) 什么是对象的属性: 存储在实例化对象之后的空间里的属性都叫对象的属性,每一次对象都有自己独立的空间, 每一个对象都有自己的属性值 什么是动态属性: 定义在类中的函数,自带一个self,就是调用这个方法的对象本身
三 相互交互
class Person: def __init__(self,name,sex,hp,mp,ad): # print(self) self.name=name self.sex=sex self.hp=hp self.mp=mp self.ad=ad def attack(self,dog): # self默认是自己本身的,后面可以传其他的对象名 # print(self) print(‘%s攻击了%s‘ % (self.name,dog.name)) dog.hp-=self.ad class Dog: def __init__(self,name,kind,hp,ad): self.name=name self.kind=kind self.hp=hp self.ad=ad def bite(self,men): print(‘%s咬了%s‘% (self.name,men.name)) men.hp-=self.ad alex=Person(‘alex‘,None,10,10,0.1) haha=Dog(‘haha‘,‘jinmao ‘,6666,663) # print(alex.__dict__[‘name‘]) # 这样也可以查看属性 # print(alex.name) # 查看属性 # alex.name=‘alex_sb‘ # 修改属性 # alex.eat=‘吃‘ # 添加属性 # print(alex.eat) # del alex.eat # print(alex.eat) # 删除属性 ‘Person‘ object has no attribute ‘eat‘ 没有属性 print(alex.name) # print(haha.hp) # 咬之前的血量 # alex.attack(haha) # 给函数传haha # print(haha.hp) # 减完之后的血量 # 狗咬人 print(alex.hp) haha.bite(alex) print(alex.hp)
以上是关于初识面向对象的主要内容,如果未能解决你的问题,请参考以下文章