day19

面向对象

1.面向过程

核心就是过程二字,过程指的是做事情的步骤,先做什么,再做什么。

基于该思想的编程,就好比一条流水线,一种机械式的思维方式

优点:逻辑结构清晰,将复杂的问题简单化,流程化

缺点:可扩展性差

2.面向对象

核心就是对象二字,对象是特征与技能的结合体,基于该思想的编程,

就好比创造世界,是一种上帝的思维方式

优点:可扩展性高

缺点:编写程序的复杂程度要远远高于面向过程的编程

3.类和对象

  • 类:类是一系列对象相似的特征和技能的结合体
  • 对象:对象是特征和技能的结合体
  • 在程序中,必须先有类,然后再有对象
  • 定义类:
    • 类在定义时,会产生一个名称空间
    • 将类内的所有名字全部丢到该名称空间中
    • 类在定义阶段已经生成了名称空间,类在定义阶段就会执行
class Student:
    school='oldboy'
    def choose_course(self):
        print ('choose course ......')
    def learning(self):
        print ('learning is ........')
  • 注意事项

    • 类中可以有任意python代码,在定义阶段就会被执行
    • 会产生新的名称空间,用来存放变量名和函数名,可以通过Student.__dict__查看
  • 绑定方法的特点:

  • 类调用阶段:

    • 1.类在调用阶段会产生一个空对象,生成一个空对象的名称空间
    • 2.会自动触发init函数
    • 3.会把对象本身以及括号内的参数一起传给init函数
  • 总结:调用类会产生一个对象,调用类的过程叫做实例化,产生的对象称为类的一个实例

  • 类内部的函数

    • 由类来调用类内部的函数,该函数只是一个普通函数,普通函数需要接收几个参数就得传入几个参数
  • 由对象调用类内部的函数称之为对象的绑定方法,不同对象调用该绑定方法,则会将不同的对象传入该绑定方法

    • 特殊之处就是把对象当作第一个参数传入该方法中

1.什么是对象?什么是类?

  • 对象是特征和技能的结合体
  • 类是一些对象相似的特征与功能的结合体

2.绑定方法的有什么特点

  • 类内部的函数主要是给对象调用的,由对象调用类内部的函数称之为绑定方法不同对象调用该绑定方法,则会将不同的对象传入该绑定方法,特殊之处就是把对象当作第一个参数传入该方法中
作业3
class Riven:
    camp='Noxus'
    def __init__(self,nikcname,aggr=54,life_value=414,money=1001,armor=3):
        self.nickname=nikcname
        self.aggr=aggr
        self.life_value=life_value
        self.money=money
        self.armor=armor
    def attack(self,enemy):
        damage_value=self.aggr-enemy.armor
        enemy.life_value-=damage_value



class Garen:
    camp='Demacia'
    def __init__(self,nickname,aggr=58,life_value=455,money=100,armor=10):
        self.nickname=nickname
        self.aggr=aggr
        self.life_value=life_value
        self.money=money
        self.armor=armor
    def attack(self,enemy):
        damage_value=self.aggr-enemy.armor
        enemy.life_value-=damage_value



class BlackCleaver:
    def __init__(self,price=475,aggr=9,life_value=100):
        self.price=price
        self.aggr=aggr
        self.life_value=life_value
    def update(self,obj):
        obj.money-=self.price
        obj.aggr+=self.aggr
        obj.life_value+=self.life_value
    def fire(self,obj):
        obj.life_value-=1000


r1=Riven('草丛伦')
g1=Garen('盖文')
b1=BlackCleaver()

print (r1.aggr,r1.life_value,r1.money)
print (g1.life_value)
r1.attack(g1)

print (g1.life_value)
r1.b1.fire(g1)
print (g1.life_value)
posted @ 2019-10-09 19:01  ztzdhbg  阅读(134)  评论(0编辑  收藏  举报