zoukankan      html  css  js  c++  java
  • 10-12 面向对象初级

     
    #面向对象引入的例子
    def Person(name,blood,aggr,sex): person = { 'name':name, 'blood':blood, 'aggr':aggr, 'sex':sex } def attack(dog): # 人打狗 dog['blood'] -= person['aggr'] print('%s被%s打了,掉血%s' % (dog['name'], person['name'], person['aggr'])) person['attack'] = attack return person def Dog(name,blood,aggr,sex): dog = { 'name':name, 'blood':blood, 'aggr':aggr, 'sex':sex } def bite(person): # 狗咬人 person['blood'] -= dog['aggr'] print('%s被%s咬了,掉血%s' % (person['name'], dog['name'], dog['aggr'])) dog['bite'] = bite return dog p = Person('小姚',1000,20,'女') d = Dog('cola',500,10,'不详') print('人:',p) print('狗:',d) p['attack'](d) print(d) d['bite'](p) print(p)

    结果:

    人: {'name': '小姚', 'blood': 1000, 'aggr': 20, 'sex': '女', 'attack': <function Person.<locals>.attack at 0x02518BB8>}
    狗: {'name': 'cola', 'blood': 500, 'aggr': 10, 'sex': '不详', 'bite': <function Dog.<locals>.bite at 0x02518C00>}
    cola被小姚打了,掉血20
    {'name': 'cola', 'blood': 480, 'aggr': 10, 'sex': '不详', 'bite': <function Dog.<locals>.bite at 0x02518C00>}
    小姚被cola咬了,掉血10
    {'name': '小姚', 'blood': 990, 'aggr': 20, 'sex': '女', 'attack': <function Person.<locals>.attack at 0x02518BB8>

    舒适面向对象

    对象= 类名()
    过程:
    类名() 首先会创造出一个对象,创建了一个self对象
    调用__init__(),类名括号里的参数会被这里接收
    执行__init__()
    返回self

    对象能做的事儿:
    查看属性
    调用方法
    __dict__对于对象的增删改查都可以通过字典的语法进行

    类名能做的事情:
    实例化
    调用方法:只不过要自己传递self参数
    调用类中的属性
    __dict__对于类中的名字只能看,不能操作
    class Person:
        country = 'China'       #创造了一个只要是这个类就一定有的属性,即类属性,静态属性
        #__init__函数不需要return语句,self会自动的作为返回值
        def __init__(self,*args):       #self就是一个可以存储很多属性的大字典,不过是往字典里面添加属性的方法发生了变化
            # print(self.__dict__)
            self.name = args[0]
            self.blood = args[1]
            self.aggr = args[2]
            self.sex = args[3]
            # print(self.__dict__)
            # print(id(self))
        def walk(self,n):
            print('%s走走走,走了%s步'%(self.name,n))
    
    p = Person('小姚',1000,20,'女')    #alex对象      #实例化
    
    Person.walk(p,5)      #用类名调用方法---类名.方法名(对象名)
    p.walk(5)   #同Person.walk(p)        #用对象调用方法
    
    print(p.__dict__)       #查看所有属性
    print(id(p))
    print(p.sex)        #查看特定属性
    
    print(Person.country)       #结果:China
    print(Person.__dict__['country'])   #结果:China
    print(p.__dict__['aggr'])       #结果:20
    
    # 改信息
    p.name = '夏夏'
    print(p.__dict__)       #结果:{'name': '夏夏', 'blood': 1000, 'aggr': 20, 'sex': '女'}
    
    p.__dict__['name'] = '夏夏'
    print(p.__dict__)       #结果:{'name': '夏夏', 'blood': 1000, 'aggr': 20, 'sex': '女'}
    
    # 增加属性
    p.age = 23
    print(p.__dict__)       #结果:{'name': '小姚', 'blood': 1000, 'aggr': 20, 'sex': '女', 'age': 23}
    
    Person.__dict__['country'] = '印度'       #报错,类属性不可修改
    

      

  • 相关阅读:
    【Oracle】EXPDP和IMPDP数据泵进行导出导入的方法
    【Oracle】无法删除当前连接的用户
    消除SVN锁定
    提取当前目录所有文件名
    【Weblogic】domain快速启动脚本
    Spring @Transactional注解不回滚不起作用无效
    协方差与相关系数
    利用深度学习解决直播支付风控[转]
    高质量API网关组件实现
    git使用初探
  • 原文地址:https://www.cnblogs.com/Cheryol/p/9778331.html
Copyright © 2011-2022 走看看