• python学习笔记,初始面向对象。


    1,面向对象的引入

    #人狗大战
    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的血' % (dog['name'], person['aggr']))
        person['attack'] = attack
        return person
    #优点 :代码精简了 方便增加人物  方便修改 人物更加规范了。————人模子
    def Dog(name,blood,aggr,kind):
        dog = {
            'name':name,
            'blood':blood,    #血量
            'aggr':aggr,       #攻击力
            'kind':kind
        }
        # 狗 咬人
        def bite(person):
            person['blood'] -= dog['aggr']
            print('%s被咬了,掉了%s的血' % (person['name'], dog['aggr']))
        dog ['bite'] = bite
        return dog
    
    
    dog = Dog('狗子',1000,100,'teddy')
    alex = Person('alex',100,1,'None')
    nezha = Person('哪吒',200,2,'None')
    print(alex)
    dog['bite'](alex)
    print(alex)
    #Dog 函数 和 Person 函数都是定义了一类事物
    #直到调用了函数,复制了之后才真的有了一个是实在的人和狗。
    #面向对象编程
    #所谓模子 就是 类 抽象的 我能知道有什么属性 有什么技能 但不能知道具体的值
    #dog alex nezha 就是对象 有具体的值,属性和技能都是根据类规范的

    2,初始面向对象

    class 类名:
        属性 = 'a'
    print(类名.属性 )
    #类名的作用 就是操作属性 查看属性
    
    class Person:           #类名
        country = 'China'   #创造了一个只要是这个类就一定有的属性
                            #类属性 静态属性
        def __init__(self,*args):   #初始化方法,self是对象,是一个而必须传的参数
            #print(self.__dict__)    #self就是一个可以存储很多属性的大字典
            self.name = args[0]     #往字典里添加属性的方式发生了一些改变
            self.blood = args[1]
            self.aggr = args [2]
            self.sex = args [3]
        def walk(self,n):   #方法,一般情况下必须传self参数,且必须写在第一个
                            #后面还可以传其他参数,是自由的。
            print('%s走走走,走了%d步'%(self.name,n))
    
    print(Person.country)
    print(Person.__dict__)
    alex = Person('alex',100,1,'None') # alex 对象 实例化
    print(alex.__dict__)#查看所有属性
    print(alex.name)    #查看属性的值
    # print(alex.blood)
    # print(alex.aggr)
    # print(alex.sex)
    #Person.walk(alex) #调用方法 类名.方法名(对象名)
    alex.walk(5) #Person.walk(alex)的简写
    # 对象 = 类名()
    #  过程:
        #  类名() 首先会创造出一个对象,创建了一个self变量
        #  调用了init方法,类名括号里的参数会被这里接收
        #  执行init方法
        #  返回self
    #对象能做的事情:
        #   操作属性
        #   调用方法
        #__dict__ 对于对象的属性,都可以通过字典的语法来修改属性的值。
    #类能做的事情:
        #实例化
        #调用方法   只不过要自己传递self参数
        #调用类中的属性,也就是调用静态属性
        #__dict__类中的属性,只能看,不能修改。
    #不管是 类名 还是 对象 都可以调用 __dict__ 属性
    print(Person.__dict__['country'])
    Person.__dict__['country'] = '印度'
    print(alex.__dict__['name'])
    alex.__dict__['name'] = '狗子'
    print(alex.__dict__['name'])
    alex.age = 99
    print(alex.__dict__)

    运行结果:

    {'name': 'alex', 'blood': 100, 'aggr': 1, 'sex': 'None'}
    alex被狗子咬了,掉了100的血
    {'name': 'alex', 'blood': 0, 'aggr': 1, 'sex': 'None'}
    {'name': '狗子', 'blood': 1000, 'aggr': 100, 'kind': 'teddy'}
    哪吒被狗子打了,掉了100的血
    {'name': '狗子', 'blood': 900, 'aggr': 100, 'kind': 'teddy'}
    

    2.2练习,以面向对象编程的思想实现下面的功能

    练习一:在终端输出如下信息
    小明,10岁,男,上山去砍柴
    小明,10岁,男,开车去东北
    小明,10岁,男,最爱大保健
    老李,90岁,男,上山去砍柴
    老李,90岁,男,开车去东北
    老李,90岁,男,最爱大保健
    老张...

    class Person:
        def __init__(self,name,age,sex,hobby):
            self.name = name
            self.age = age
            self.sex = sex
            self.hobby = hobby
        def climb(self):
            print('{0},{1}岁,{2},上山去砍柴'.format(self.name,self.age,self.sex))
        def love(self):
            print('{0},{1}岁,{2},最爱{3}'.format(self.name,self.age,self.sex,self.hobby))
        def driv(self):
            print('{0},{1}岁,{2},开车去东北'.format(self.name,self.age,self.sex))
    
    ming = Person('小明',10,'','大保健')
    li = Person('老李',90,'','大保健')
    zhang = Person ('老张',50,'','大保健')
    ming.climb()
    ming.driv()
    ming.love()
    
    li.climb()
    li.driv()
    li.love()
    
    zhang.climb()
    zhang.driv()
    zhang.love()

    运行结果:

    小明,10岁,男,上山去砍柴
    小明,10岁,男,开车去东北
    小明,10岁,男,最爱大保健
    老李,90岁,男,上山去砍柴
    老李,90岁,男,开车去东北
    老李,90岁,男,最爱大保健
    老张,50岁,男,上山去砍柴
    老张,50岁,男,开车去东北
    老张,50岁,男,最爱大保健
  • 相关阅读:
    cocos2d-x把json数据解析到数组或字典中(libjson库)
    (bug更正)利用KVC和associative特性在NSObject中存储键值
    第二次博客作业
    我的感想
    期末总结
    陈老师作业
    第三次作业---四则运算的进一步完善
    好难
    对git的认识
    计应143 卞玉新
  • 原文地址:https://www.cnblogs.com/Dmail/p/11568584.html
Copyright © 2020-2023  润新知