zoukankan      html  css  js  c++  java
  • 初识面向对象

    面向对象

    面向对象编程 是一种思想
    对象就是具体的拥有准确属性值的一些变量
    类:一类具有相同属性和方法的事物

    类的定义 class关键字 类名的首字母大写
    类中直接定义属性:静态属性(变量) 和动态属性(函数)
    类名的两个作用:属性引用实例化对象
    类和属性的操作:类名.属性名 类名.__dict__['属性名'](不能修改)

    复制代码
    class Person:  # 类名有两个作用
        country = '中国'  # 静态属性、数据属性
        def __init__(self,life_value,aggr,name,job):  # 初始化方法
            self.lv = life_value  # 属性,对象属性
            self.aggr = aggr
            self.name = name
            self.job = job
        def walk(self):  # 动态属性、函数属性、方法
            print('%s is walking'%self.name)
    复制代码

    属性引用

    复制代码
    print(Person.walk)
    # print(Person.walk())  # 报错 少参数
    print(Person.__dict__)
    print(Person.__dict__['country'])  # 中国
    # Person.__dict__['country'] = '印度'  # 报错 不能改变
    print(Person.country)  # 中国 静态属性的查看
    Person.role = '人'  # 添加一个新静态属性
    print(Person.role)  # 人
    del Person.role  # 删除一个静态属性
    Person.country = '印度'  # 修改一个静态属性
    print(Person.country)  # 印度
    复制代码

    实例化对象

    实例化:从一个类中创造一个具体的对象的过程

    print(callable(Person))  # True
    p = Person()
    print(p)  # <__main__.Person object at 0x00000000028CD198> Person的对象

    实例化——类名(参数)
    构造方法:造对象
    初始化:给这个对象添加一些属性 __init__
    返回了一个初始化之后的对象
    如何让对象拥有具体的属性
    __init__方法:初始化方法,可以没有,给对象添加一些必要的基础属性
    self的含义:就是这个对象本身

    复制代码
    p = Person(1000,2,'金老板','boss')
    print(p.lv)  # 1000
    print(p.aggr)  # 2
    print(p.name)  # 金老板
    print(p.job)  # boss
    print(p.__dict__)  # {'lv': 1000, 'aggr': 2, 'name': '金老板', 'job': 'boss'}
    print(p.__dict__['lv'])  # 1000
    p.__dict__['lv'] = 998  # 对象名.__dict__中的属性值可以被修改
    print(p.__dict__['lv'],p.lv)  # 998 998
    p.__dict__['sex'] = 'ladyboy'  # 对象名.__dict__中的属性值可以增加
    print(p.sex)  # ladyboy
    p.__dict__.pop('sex')  # 对象名.__dict__中的属性值可以被删除
    
    p.sex = 'ladyboy'  # 添加一个属性
    print(p.sex)
    p.sex = 'girl'  # 属性的修改
    del p.sex  # 删除一个属性
    # 对象和属性的操作:对象名.属性名 对象名.__dict__['属性名']
    
    # Person.walk(p)  # 金老板 is walking
    p.walk()  # Person.walk(p)
    复制代码

    面向对象交互

    简单的人狗大战

    复制代码
    class Person:
        def __init__(self,life_value,aggr,name,job):
            self.name = name
            self.aggressive = aggr
            self.life = life_value
            self.job = job
        def attack(self,dog_obj):
            print('%s 攻击了 %s'%(self.name,dog_obj.name))
            dog_obj.life = dog_obj.life - self.aggressive
    
    
    
    class Dog:
        def __init__(self,life_value,aggr,name,kind):
            self.life = life_value
            self.aggressive = aggr
            self.name = name
            self.kind = kind
        def bite(self,person):
            print('%s 攻击了 %s'%(self.name,person.name))
            person.life = person.life - self.aggressive
    
    dog = Dog(1000,100,'铁蛋','土狗')
    boss_gold = Person(100,2,'太黑','old_driver')
    boss_gold.attack(dog)
    print(dog.life)
    dog.bite(boss_gold)
    print(boss_gold.life)
  • 相关阅读:
    Redhat Lighttpd安装配置
    PHP正则表达式学习参考的文章
    50点提高PHP编程效率 引入缓存提升性能
    位运算符C语言
    Redhat Mongodb学习笔记
    Redhat Cacti安装配置
    HTTP 状态代码表示什么意思?
    map容器对象插入数据的4种方式
    socket网络间通信初识
    仿美团项目-第一部分
  • 原文地址:https://www.cnblogs.com/QQ279366/p/7853261.html
Copyright © 2011-2022 走看看