• 面向对象:类和对象 组合



    # 类:具有相同属性和技能的一类事物.
    # 人类:
    # 对象: 具体的类的表现,具体的实实在在的一个实例
    # 人是一类,大阳哥是一个对象.
    # 狗是一类,我家养的旺财是一个对象.

    # class Person:
    # '''类体:两部分:变量部分,方法(函数)部分'''
    # mind = '有思想' # 变量,静态变量,静态字段
    # animal = '高级动物'
    # faith = '有信仰'
    # def __init__(self):
    # print(self)
    # print(666)
    # # def __init__(self, name, age, sex, hobby):
    # # print(666)
    # def work(self): # 方法,函数,动态变量
    # print(self)
    # print('人类都会工作...')
    # def shop(self):
    # print('人类可以消费....')
    #
    # # 类名的角度
    # # 操作类中的静态变量
    # # 1, Person.__dict__ 查询类中的所有的内容 (不能进行增删改操作)
    # # print(Person.__dict__)
    # # print(Person.__dict__['faith'])
    # # Person.__dict__['mind'] = '无脑'
    # # print(Person.__dict__['mind'])
    # # 2, 万能的 . 对类中的单个的变量进行增删改查,用 万能的 点
    # # print(Person.mind)
    # # print(Person.animal) # 查
    # # Person.money = '运用货币' # 增
    # # Person.mind = '无脑的' # 改
    # # del Person.mind
    # # print(Person.__dict__)
    #
    # #操作类中的方法 (工作中基本不用类名去操作)
    # # Person.work(111)
    #
    # # 对象的角度
    # ret = Person() # 类名+()的这个过程:实例化的过程(创建一个对象的过程),
    # # Person() 实例化对象,实例,对象.
    # print(ret)
    # #1,只要类名+() 产生一个对象,自动执行类中的__init__方法.



    class Person:
    '''类体:两部分:变量部分,方法(函数)部分'''
    mind = '有思想' # 变量,静态变量,静态字段
    animal = '高级动物'
    faith = '有信仰'

    def __init__(self,name,age,hobby):
    self.name = name # Person.money = '运用货币'
    self.age = age
    self.hobby = hobby

    def work(self): # 方法,函数,动态变量

    print('%s都会工作...' %self.name)
    def shop(self):

    print('人类可以消费....')

    # 类名的角度
    # 操作类中的静态变量
    # 1, Person.__dict__ 查询类中的所有的内容 (不能进行增删改操作)
    # print(Person.__dict__)
    # print(Person.__dict__['faith'])
    # Person.__dict__['mind'] = '无脑'
    # print(Person.__dict__['mind'])
    # 2, 万能的 . 对类中的单个的变量进行增删改查,用 万能的 点
    # print(Person.mind)
    # print(Person.animal) # 查
    # Person.money = '运用货币' # 增
    # Person.mind = '无脑的' # 改
    # del Person.mind
    # print(Person.__dict__)

    #操作类中的方法 (工作中基本不用类名去操作)
    # Person.work(111)

    # 对象的角度
    # ret = Person('alex',1000, 'oldwomen') # 类名+()的这个过程:实例化的过程(创建一个对象的过程),
    # Person() 实例化对象,实例,对象.
    # print(ret)


    #1, 类名+()产生一个实例(对象,对象空间.)
    #2, 自动执行类中的__init__方法,将对象空间传给__init__的self参数,
    #3, 给对象封装相应的属性.
    # print(ret.__dict__)

    # 对象的角度
    # 操作对象中的静态变量
    #1, __dict__ 查询对象中的所有的内容
    #2, 万能的. 万能的 点.
    # print(ret.name) # 查
    # ret.high = 175 # 增
    # del ret.name # 删
    # ret.age = 73 # 改
    # print(ret.__dict__)
    # 对象操作类中的静态变量 : 只能查询.
    # print(ret.mind)

    # 对象调用类中的方法 (工作中 通过对象执行类中的方法,而不是通过类名)
    # ret.shop()
    # print(ret)

    bigsum = Person('大阳哥',39, '非男')
    india_ning = Person('印度阿宁',19, '女')
    bigsum.work()
    india_ning.work()


    class GameRole:
    def __init__(self, name, ad, hp):
    self.name = name
    self.ad = ad
    self.hp = hp

    def attack(self,p):
    p.hp = p.hp - self.ad
    print('%s 攻击 %s,%s 掉了%s血,还剩%s血' %(self.name,p.name,p.name,self.ad,p.hp))

    def armament_weapon(self,wea):
    self.wea = wea

    组合: 给一个类的对象封装一个属性,这个属性是另一个类的对象.

    class Weapon:
    def __init__(self,name,ad):
    self.name = name
    self.ad = ad
    def fight(self,p1,p2):
    p2.hp = p2.hp - self.ad
    print('%s 用%s打了%s,%s 掉了%s血,还剩%s血'
    % (p1.name,self.name,p2.name,p2.name,self.ad,p2.hp))

    p1 = GameRole('大阳哥',20,500)
    p2 = GameRole('印度阿宁',50,200)
    axe = Weapon('三板斧',60)
    broadsword = Weapon('屠龙宝刀',100)
    # print(axe)
    p1.armament_weapon(axe) # 给大阳哥 装备了三板斧这个对象. #组合
    # print(p1.wea)
    # print(p1.wea.name)
    # print(p1.wea.ad)
    p1.wea.fight(p1,p2)

    # 计算一个类 实例化多少对象.

    class Count:
    count = 0
    def __init__(self):
    Count.count = self.count + 1

    obj1 = Count()
    obj2 = Count()

    print(Count.count)

    # 通过类名可以更改本类中的静态变量值
    Count.count = 6
    print(Count.__dict__)

    # 但是通过对象 不能改变只能引用类中的静态变量

    obj1 = Count()
    print(obj1.count)
    obj1.count = 5
    print(obj1.count)
    print(Count.count)
  • 相关阅读:
    解决下载Android源码时遇到的 download error
    将HTML5封装成android应用APK
    实现静默安装和卸载应用
    java获取当前类的绝对路径
    c# winform程序如何获取命令行带参数启动时的参数
    安装软件时提示:Error 1324. The path My Documents contains a invalid character
    C# Winform 禁止重复运行
    Java获取JSON参数
    Ext JS 4: Override timeouts
    查看oracle数据库的连接数以及用户
  • 原文地址:https://www.cnblogs.com/luxiangyu111/p/9373231.html
Copyright © 2020-2023  润新知