• 面向对象与组合


    类与对象

    面向对象的编程方式

    class
    定义函数: 方法 动态属性
    定义变量: 类属性 静态属性
    __init__方法 初始化方法
    python帮我们创建了一个对象self
    每当我们调用类的时候就会触发这个方法
    # class Dog:
    #     def __init__(self,name,hp,ad,sex):
    #         self.name = name
    #         self.hp = hp
    #         self.ad = ad
    #         self.sex = sex
    #     def bite(self,person):
    #         person.hp -= self.ad
    #         print('%s被咬了,掉了%s的血'%(person.name,self.ad))
    # class Person:
    #     def __init__(self,name,hp,ad,sex):
    #         self.name = name
    #         self.hp = hp
    #         self.ad = ad
    #         self.sex = sex
    #     def kick(self,dog):
    #         dog.hp -= self.ad
    #         print('%s被踢了,掉了%s的血'%(dog.name,self.ad))
    # eg = Person('二狗',100,5,'nan')
    # dh = Dog('大黄',100,10,'teddy')
    # dh.bite(eg)
    # eg.kick(dh)
    # print(dh.hp)
    # print(eg.hp)
    # from math import  pi
    # class Circle:                # 类,类里面可以定义方法方便使用
    #     def __init__(self,r):
    #         self.r = r
    #     def area(self):          # 方法
    #         return pi*self.r**2
    #     def perm(self):         # 方法
    #         return 2*pi*self.r
    # c1 = Circle(4)
    # print(c1.area())
    # print(c1.perm())·

    组合

    
    
    # 对于不可变数据类型 类便最好用类名操作
    # 对于可变数据类型 对象名的修改是共享的 重新赋值是独立的
    
    
    #对象名调用方法 就发生了绑定
    class Person:
        def __init__(self,name,hp,aggr,sex):
            self.name = name
            self.hp = hp
            self.aggr = aggr
            self.sex = sex
            self.money = 0
        def kick(self,dog):
            dog.hp -= self.aggr
        def get_weap(self,weap):
            if self.money>=weap.price:
                self.money -= weap.price
                self.aggr += weap.aggr
                self.weap = weap
            else:
                print('no money')
    
    class Dog:
        def __init__(self,name,hp,aggr,kind):
            self.name = name
            self.hp = hp
            self.aggr = aggr
            self.kind = kind
        def bite(self,person):
            person.ho -= dog.aggr
    
    class Weap:
        def __init__(self,name,aggr,nai,price):
            self.name = name
            self.aggr = aggr
            self.nai = nai
            self.price = price
        def R(self,aim):
            if self.nai>0:
                print('暴击')
                aim.hp -= self.aggr*2.5
                self.nai -= 1
    
    ren = Person('二狗',100,5,'')
    dh = Dog('大黄',1000,20,'teddy')
    wu = Weap('斩黄剑',200,3,999)
    ren.money += 1000
    ren.get_weap(wu)
    ren.kick(dh)
    print(dh.hp)
    ren.weap.R(dh)
    print(dh.hp)
    #  组合  :  一个对象的属性值是另一个类的对象
  • 相关阅读:
    类加载器加载class文件
    多线程用到的概念知识点
    3年工作经验你的程序员应该具备的技能
    面试题
    正则表达式(一)
    Servlet(五)----ServletContext对象
    Servlet(四)----HTTP、Response、servletContent
    JDBC(三)----Spring JDBC(JDBCTemplate)
    JDBC(四)----数据库连接池
    JDBC(三)----JDBC控制事务
  • 原文地址:https://www.cnblogs.com/mu-tang/p/14122818.html
Copyright © 2020-2023  润新知