• python-初识面向对象


    # class Person:   #类名有两个作用
    # country = '中国' #country被称为静态属性或数据属性
    # def walk(self): ##动态属性、函数属性、方法
    # print('walk')
    # 类名有两个作用:1.属性引用 2.实例化对象
     1.属性对象的引用
    # print(Person.country)   #静态属性的查看
    # # print(Person.walk)
    # Person.role = '人'   #添加一个新的静态属性
    # print(Person.role)
    # Person.country = '印度'   #修改一个新的静态属性
    # print(Person.country)
    # del Person.role         #删除一个静态属性
    # print(Person.__dict__)
    
    # print(Person.walk())        #会报错,原因是缺少self参数
    # Person.__dict__['country'] = '印度'#会报错,该dict不支持修改
    # print(Person.__dict__['country'])
    # print(Person.country)       #同dict一样都是可以查看的
    
    # 2.类能完成的第二个功能:实例化对象
    # 实例化:从一个类中创造一个具体的对象的过程
    # p = Person()
    # print(p)    #Person的对象
    
    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)
    # p = Person()    #如何让对象拥有具体的属性
    p = Person(1000,2,'金老板','boss') #如何让对象拥有具体的属性
    # p.walk()
    # print(p.lv)
    # print(p.aggr)
    # p.sex = 'girl'      #添加一个属性
    # print(p.sex)
    # p.sex = 'lady_boy'    #属性的修改
    # print(p.sex)
    # # del p.sex       #属性的删除
    
    # print(p.__dict__)
    # print(p.__dict__['lv']) #查看
    # p.__dict__['lv'] = 998  #对象名.__dict__中的属性值可以被修改
    # print(p.__dict__['lv'],p.lv)
    # p.__dict__['sex'] = 'lady_boy' #对象名.__dict__中的属性值可以增加
    # print(p.__dict__,p.sex)
    # p.__dict__.pop('sex')   #对象名.__dict__中的属性值可以被删除
    # print(p.__dict__)
    类的定义:class关键字,类名的首字母大写
    # 类中直接定义属性:静态属性(变量)和动态属性(函数)
    # 类名的两个作用:属性的引用,实例化对象
    # 类名和属性的操作:对象名.属性名 对象名.__dict__['属性名'](不能修改)
    # 实例化--类名(参数)
    # 构造函数:造函数
    # 初始化__init__:给这个赤裸裸的对象添加一些属性,__init__返回了一个初始化之后的对象
    # __init__方法:初始化方法,可以没有,给对象添加一些必要的基础属性
    # self的含义:就是这个对象本身
    # 对象和属性的操作:对象名.属性 对象名.__dict__['属性名']
    总结:
    # 对象的属性是可以直接增删改查的
    # 对象.__dict__也是可以查看,增加,修改和删除pop的

    # 类的属性是可以直接增删改查的
    # 类.__dict__可以查看

    面向对象交互小例子
    # 人类:
    # 属性:life_value,aggr,anme,job
    # 方法:attack
    
    class Person:
        def __init__(self,life_value,aggr,name,job):
            self.life = life_value
            self.aggressive = aggr
            self.name = name
            self.job = job
        def attack(self,dog_obj):
            print('%s攻击了%s'%(self.name,dog_obj.name))
            dog_obj.life = dog_obj.life - self.aggressive
    
    
    # 狗类:
    # 属性:life_value,aggr,name,kind
    # 方法bite
    class Dog:
        def __init__(self,life_value,aggr,name,kind):
            self.life = life_value
            self.aggr = aggr
            self.name = name
            self.kind = kind
        def bite(self,person_obj):
            print('%s咬了%s'%(self.name,person_obj.name))
            person_obj.life -= self.aggr
    
    
    tiedan = Dog(1000,100,'铁蛋','土狗')
    boss_gold = Person(100,2.5,'金老板','old_driver')
    
    boss_gold.attack(tiedan)
    print(tiedan.life)
    tiedan.bite(boss_gold)
    print(boss_gold.life)
    View Code
     
  • 相关阅读:
    Android开发与Sequoyah的安装问题
    Discuz 数据库各表的作用
    jQuery-File-Upload $(...).fileupload is not a function $.widget is not a function
    phpstorm xdebug 无法断点调试问题
    Android Service 启动流程
    Discuz! 全局变量说明
    Discuz! X3 数据表、数据字段说明
    Spring Boot 搭建
    Android组件化开发(注意事项)
    NestedScrollView嵌套RecycleView发生的小问题
  • 原文地址:https://www.cnblogs.com/dwenwen/p/7874904.html
Copyright © 2020-2023  润新知