面向对象
1、面向对象
面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物:对象就是单独的个体,程序的设计都是在这个个体之内。
优点:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
缺点:可控性差
类:抽象的,我能知道什么属性,有什么技能,但不知道属性的具体的值
对象,有具体的值,技能和属性都是根据类的规范
2、类和对象
类:具有相同特征的一类事物(人、狗、老虎)
对象:具体的某一个事物(隔壁阿花、楼下旺财)
实例化:类到对象具体实例的过程
1)类名 () 创造出一个对象,并且创造了一个self变量
调用__init__方法,类名括号里的参数会在这里被接收
执行__init__方法
返回self
2)对象能做的事
查看属性
调用方法
__dict__对于对象的增删改查都可以通过字典的语法进行
3)类名能做的事
实例化
调用方法,要自己传递self参数
调用类中的属性,也就是调用静态属性
__dict__调用类中的属性,只能查看,不能修改
3、具体实例:
class Person: #类名 country= 'China' #创造了一个只要是这个是这个类就有的属性, #类属性,是静态属性 def __init__(self,name,blood,aggr,kind): #初始化方法,self是一个必须传的参数 self.name=name #self是一个可以储存很多属性的大字典 self.blood=blood self.aggr=aggr self.kind=kind def attack(self,dog): #方法,一般情况下必须传self参数,且必须写在第一 dog.blood -= self.aggr #个,后面可以传很多参数,是自由的 print(dog.blood) jin=Dog('金老板',100,20,'male') #类名实例化对象,jin就是实例化 alex=Person('Alex',100,30,'男') print(alex.country) #类名,可以看类的属性,不需要实例化就可以看属性 print(alex.__dict__) #查看所有属性 alex.attack(jin) #相当于Person.attack(alex,jin),调用方法 类名.方法名(对象名) class Dog: def __init__(self,name,blood,aggr,kind): self.name=name self.blood=blood self.aggr=aggr self.kind=kind def bite(self,person): person.blood -= self.aggr print(person.blood)
未完待续……