zoukankan      html  css  js  c++  java
  • 面向对象与组合

    类与对象

    面向对象的编程方式

    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)
    #  组合  :  一个对象的属性值是另一个类的对象
  • 相关阅读:
    [hdu-2048] 神、上帝以及老天爷
    or1200中IMMU分析(续)
    Java Applet读写client串口——终极篇
    树莓派_Linux串口编程_实现自发自收
    2014百度实习生面试题(部分)具体解释
    Leetcode
    eclipse+webservice开发实例
    现有一些开源ESB总线的比較
    《HTML5 从入门到精通--7.6.3 单元格垂直跨度——rowspan》
    百度究竟是哪国的公司
  • 原文地址:https://www.cnblogs.com/mu-tang/p/14122818.html
Copyright © 2011-2022 走看看