zoukankan      html  css  js  c++  java
  • python 基础复习 13

      1 # class Person:
      2 #     def __init__(self,name,blood,aggr,sex):
      3 #         self.name = name
      4 #         self.blood = blood
      5 #         self.aggr = aggr
      6 #         self.sex = sex
      7 #     def attack(self,dog):
      8 #         # 人打狗,狗掉血
      9 #         jin.blood -= self.aggr
     10 #         if jin.blood <= 0:
     11 #             print("%s打了%s,%s被打死了"%(self.name,dog.name,dog.name))
     12 #
     13 # class Dog:
     14 #     def __init__(self,name,blood,aggr,kind):
     15 #         self.name = name
     16 #         self.blood = blood
     17 #         self.aggr = aggr
     18 #         self.kind = kind
     19 #     def bite(self,person):
     20 #         # 狗咬人,人掉血
     21 #         person.blood -= self.aggr
     22 #         if person.blood <= 0:
     23 #             print("%s咬了%s,%s被咬死了"%(self.name,person.name,person.name))
     24 #
     25 # jin = Dog("laoban",100,200,"buxiang")
     26 # alex = Person("alex",200,10,"不详")
     27 # # print(jin.name)
     28 # jin.bite(alex)
     29 # print(alex.blood)
     30 # alex.attack(jin)
     31 # print(jin.blood)
     32 
     33 
     34 # 练习
     35 """
     36 小明,10岁,男,上山去砍柴
     37 小明,10岁,男,开车去东北
     38 小明,10岁,男,最爱大保健
     39 老李,90岁,男,上山去砍柴
     40 老李,90岁,男,开车去东北
     41 老李,90岁,男,最爱大保健
     42 """
     43 
     44 # class Person:
     45 #     def __init__(self,name,age,sex):
     46 #         self.name = name
     47 #         self.age = age
     48 #         self.sex = sex
     49 #     def shangshan(self):
     50 #         print("%s, %s岁, %s, 上山去砍柴"%(self.name,self.age,self.sex))
     51 #
     52 #     def drive(self):
     53 #         print("%s, %s岁, %s, 开车去东北"%(self.name,self.age,self.sex))
     54 #
     55 #     def hobby(self):
     56 #         print("%s, %s岁, %s, 最爱大保健"%(self.name,self.age,self.sex))
     57 #
     58 # min = Person("小明","10","男")
     59 # min.shangshan()
     60 # min.drive()
     61 # min.hobby()
     62 # li = Person("老李","90","男")
     63 # li.shangshan()
     64 # li.drive()
     65 # li.hobby()
     66 
     67 # circle  属性 半径 , 两个方法:求周长和面积
     68 # from math import pi
     69 # class Circle:
     70 #     def __init__(self,r):
     71 #         self.r = r
     72 #     def area(self):
     73 #         return pi*(self.r**2)
     74 #     def circleMeter(self):
     75 #         return 2*pi*self.r
     76 # c1 = Circle(5)
     77 # print(c1.area())
     78 # print(c1.circleMeter())
     79 
     80 """
     81 class 里面
     82 函数: 就是方法    动态属性  # 类中可以定义方法,方法都有一个必须传的参数self
     83 变量: 就是类属性  静态属性  # 类中可以定义静态属性
     84 
     85 __init__方法  初始化方法
     86     python帮我们创建了一个对象self
     87     每当我们调用类的时候就会自动触发这个方法。默认传self
     88     在init方法里面可以对self进行赋值
     89 
     90 self是什么  self拥有属性都属于对象
     91        在类的内部,self就是一个对象
     92 
     93 实例化  
     94    对象 = 类(参数是init方法的) 这就是实例化
     95 
     96 实例、对象
     97     实例就是对象,对象就是实例
     98     完全没有区别
     99     
    100 对象查看属性
    101      对象.属性名
    102      
    103 对象调用方法
    104    对象.方法名(参数)  
    105 """
    106 
    107 # 类里  可以定义两种属性
    108 # 静态属性
    109 # 动态属性
    110 
    111 
    112 # class Course:
    113 #     language = "Chinese"
    114 #     def __init__(self,teacher,course_name,period,price):
    115 #         self.teacher = teacher
    116 #         self.name = course_name
    117 #         self.period = period
    118 #         self.price = price
    119 #     def func(self,r):
    120 #         print("调用了")
    121 # Course.language
    122 # Course.language = "English"  #  只能用这种方法去修改类里面的静态属性
    123 # print(Course.language)
    124 # print(Course.__dict__)
    125 # Course.__dict__["language"] = "Russian"  #  这行代码报错 不能通过__dict__来修改静态属性
    126 # python1 = Course("egon","python","six_months",20000)
    127 # print(python1.language)
    128 # python1.language = "English" #  对象改变不了类中的属性
    129 # print(python1.language)
    130 # print(Course.language)
    131  # 类中的静态变量  可以被对象和类调用
    132 
    133 
    134 # 创建一个类,每实例化一个对象就记录下来
    135 # 最终所有的对象共享这个数据
    136 # class Foo:
    137 #     count = 0
    138 #     def __init__(self):
    139 #         Foo.count += 1
    140 #
    141 # f1 = Foo()
    142 # f2 = Foo()
    143 # print(f1.count)
    144 # print(f2.count)
    145 # f3 = Foo()
    146 # print(f3.count)
    147 
    148 # class Foo:
    149 #     def func(self):
    150 #         print("func")
    151 #
    152 # f1 = Foo()
    153 # print(Foo.func)
    154 # print(f1.func)
    155 
    156 
    157 
    158 # 组合
    159 class Dog:
    160     def __init__(self,name,aggr,blood,kind):
    161         self.name = name
    162         self.aggr = aggr
    163         self.blood = blood
    164         self.kind = kind
    165 
    166     def bite(self,person):
    167         person.blood -= self.aggr
    168 
    169 class Person:
    170     def __init__(self,name,aggr,blood,sex):
    171         self.name = name
    172         self.aggr = aggr
    173         self.blood = blood
    174         self.kind = sex
    175         self.money = 0
    176 
    177     def attack(self,dog):
    178         dog.blood -= self.aggr
    179 
    180     def get_weapon(self,weapon):
    181         if self.money >= weapon.price:
    182             self.money -= weapon.price
    183             self.weapon = weapon
    184             self.aggr += weapon.aggr
    185         else:
    186             print("余额不足,请先充值")
    187 
    188 class Weapon:
    189     def __init__(self,name,aggr,njd,price):  # aggr 攻击力 njd 耐久度
    190         self.name = name
    191         self.aggr = aggr
    192         self.njd = njd
    193         self.price = price
    194     def hand18(self,dog):
    195         if self.njd > 0:
    196             dog.blood -= self.aggr * 2
    197             self.njd -= 1
    198 
    199 
    200 alex = Person("alex",1,100,"不详")
    201 jin = Dog("老板",2,200,"不详")
    202 w = Weapon("打狗棒",100,3,998)
    203 # 怎么给alex装上打狗棒
    204 alex.money += 1000
    205 alex.get_weapon(w)
    206 print(alex.weapon)
    207 print(alex.aggr)
    208 
    209 alex.attack(jin)
    210 print(jin.blood)
    211 
    212 alex.weapon.hand18(jin)
    213 print(jin.blood)
    214 
    215 # 装备
    216 # 伤害
    217 # 血量
    218 
    219 # 组合 :一个对象的属性值是另外一个类的对象

    # 创建一个老师类
    # 老师有生日
    # 生日也可以是一个类
    # 用组合

    # class Birthday:
    # def __init__(self,year,month,day):
    # self.year = year
    # self.month = month
    # self.day = day
    #
    # class Course:
    # language = ["Chinese"]
    # def __init__(self,teacher,course_name,period,price):
    # self.teacher = teacher
    # self.name = course_name
    # self.period = period
    # self.price = price
    #
    # class Teacher:
    # def __init__(self,name,age,sex,birthday):
    # self.name = name
    # self.age = age
    # self.sex = sex
    # self.birthday = birthday
    # self.course = Course(self,"python","six_month",20002)
    #
    # b = Birthday(2018,1,16)
    # egg = Teacher("egon",0,"",b)
    # print(egg.name)
    # print(egg.birthday.year)
    # print(egg.birthday.month)
    # print(egg.birthday.day)
    # print(egg.course.price)
    # 定义一个老师类 在定义一个生日类
    # b是生日类的一个实例化对象 然后把 b 当做参
    # 数,传给 egg 这个老师类的实例对象,这样老
    # 师里的对象就可以调用生日类里的属性了 这就是组合



    # 面向对象的三大特性
    # 继承
    # 多态
    # 封装

    """
    什么是继承:
    继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,
    父类又可称为基类或者超类,新建的类称为派生类或子类
    """
    # class Animal:
    # def __init__(self,name,aggr,blood):
    # self.name = name
    # self.aggr = aggr
    # self.blood = blood
    #
    # class Dog(Animal):
    # def bite(self,person):
    # person.blood -= self.aggr
    #
    # class Person(Animal):
    # def attack(self,dog):
    # dog.blood -= self.aggr
    #
    # jin = Dog("金老板",200,500)
    # alex = Person("alex",200,700)
    # alex.attack(jin)
    # print(jin.blood)
    # jin.bite(alex)
    # print(alex.blood)


    # class Animal:
    # def __init__(self):
    # print("执行Animal.__init__")
    # self.func()
    # def eat(self):
    # print("%s eating"%self.name)
    #
    # def drink(self):
    # print("%s drinking"%self.name)
    # def func(self):
    # print("Animal.func")
    #
    # class Dog(Animal):
    # def guard(self):
    # print("guarding")
    # def func(self):
    # print("Dog.func")
    # dog = Dog()

    # 执行后的结果
    # 执行Animal.__init__
    # Dog.func
    # 注意 Dog()里有func()这个方法,所有就用Dog自己里的 不用父类里面的
    # 子类里没有__init__方法 就用父类里面的
     
    # class Animal:
    # def __init__(self,name,aggr,blood):
    # self.name = name
    # self.aggr = aggr
    # self.blood = blood
    #
    # def eat(self):
    # print("吃药回血")
    # self.blood += 100
    #
    # class Dog(Animal):
    # def __init__(self,name,aggr,blood,kind):
    # Animal.__init__(self,name,aggr,blood)
    # self.kind = kind # 派生类
    #
    # def bite(self,person): # 派生方法(父类没有,子类有的)
    # person.blood -= self.aggr
    #
    # class Person(Animal):
    # def __init__(self,name,aggr,blood,sex):
    # Animal.__init__(self,name,aggr,blood)
    # self.sex = sex # 派生属性
    # self.money = 0 # 派生属性 (父类里没有,子类里有的,就叫派生)
    #
    # def attack(self,dog):
    # dog.blood -= self.aggr
    #
    # def get_weapon(self,weapon):
    # if self.money >= weapon.price:
    # self.money -= weapon.price
    # self.weapon = weapon
    # self.aggr += weapon.aggr
    # else:
    # print("余额不足,请先充值")
    #
    # jin = Dog("金老板",100,500,"不详")
    # print(jin.name)
    # jin.eat()
    # print(jin.blood)

    # 只要是子类的对象调用,子类中有的名字 一定用子类的,子类中没有才找父类的,如果父类中没有就报错
    # 如果父类 子类都有 那么还是用子类的
    # 如果就是想用父类的,就在子类中在调用父类的属性或方法
     
    # class Animal:
    # def __init__(self,name,aggr,blood):
    # self.name = name
    # self.aggr = aggr
    # self.blood = blood
    #
    # def eat(self):
    # print("吃药回血")
    # self.blood += 100
    #
    #
    # class Dog(Animal):
    # def __init__(self,name,aggr,blood,kind):
    # super().__init__(name,aggr,blood)
    # self.kind = kind # 派生属性

    # jin = Dog("金老板",200,500,"不详")
    # print(jin.name)


    # 父类中没有的属性,在子类中出现 叫做派生属性
    # 父类中没有的方法 在子类中出现 叫做派生方法
    # 如果是子类的对象调用,子类中的名字 一定用子类的,子类中没有才找父类中的,如果父类也没有 就报错
    # 如果父类 子类都有 就用子类的
    # 如果还是想用父类的,就单独在调用父类的:
    # 第一种 父类名.方法名 不过需要自己传参数
    # 第二种 super().方法名 不需要自己传self


    # 注:本文是根据老男孩课程内容整理而成的,本文仅供个人笔记使用,如果有侵犯,请联系我,我立即撤销。
     
  • 相关阅读:
    The path "" is not valid path to the gcc binary.
    ADB命令介绍
    Android 中Message,MessageQueue,Looper,Handler详解+实例
    Sqlite 修改字段
    曾经光辉岁月 永远海阔天空
    用AchartEngineActivity引擎自定义图表控件和背景折线图
    一个帖子学会Android开发四大组件
    Android获得系统时间(24小时制)
    TagBuilder
    MVC
  • 原文地址:https://www.cnblogs.com/pioneerLee/p/10223398.html
Copyright © 2011-2022 走看看