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

    '''
    一、类的实例化:
    调用类产生对象的过程称之为实例化,实例化的结果称之为一个对象,或者一个实例。
    '''
    # 示例:
    """
    现实中的对象:
    对象1
    特征:
    名字:冯提莫
    年龄:25
    性别:female

    技能:
    抱抱
    kiss

    对象2
    特征:
    名字:林志玲
    年龄:33
    性别:female
    技能:
    抱抱
    kiss
    """
    # 1、程序中的类
    # class Goddess:
    # def __init__(self,name,age,sex):
    # self.name=name
    # self.age=age
    # self.sex=sex
    # def skill(self,kiss,embrace):
    # self.kiss=kiss
    # self.embrace=embrace
    # print('大发 %s,%s你了'%(self.name,self.kiss))
    # ftm=Goddess('冯提莫',25,'female')
    # print(ftm.name,ftm.age,ftm.sex)
    # ftm.skill('kiss',None)
    # lzl=Goddess('林志玲','33','female')
    # lzl.skill('kiss',None)
    #实例化做了三件事
    #1、先产生一个空对象
    #2、自动触发类内部__init__函数的执行
    #3、将空对象,以及调用类括号内传入的参数,一同传给__init__,为对象定制独有的属性
    # obj=People('egon',18,'male') #People.__init__(obj,'egon',18,'male')

    # 会产生对象的名称空间,如何查看
    # print(obj.__dict__)


    #二;对象的操作
    # print(obj.name) #obj.__dict__
    # obj.education='哈佛'
    # del obj.name
    # obj.age=19
    # print(obj.__dict__)


    #三:对象属性的查找顺序:先找对象自己的名称空间----》类的名称空间
    # class People:
    # x=1
    # def __init__(self,name,age,sex):
    # self.name=name
    # self.age=age
    # self.sex=sex
    #
    # def run(self): #self=obj
    # print('%s is running' %self.name) #obj.name
    #
    # obj=People('egon',18,'male') #People.__init__(obj,'egon',18,'male')
    # obj1=People('egon1',18,'male') #People.__init__(obj,'egon',18,'male')
    # obj2=People('egon2',18,'male') #People.__init__(obj,'egon',18,'male')

    #1、类的数据属性:是给对象用的,而且直接共享给所有对象用的,内存地址都一样
    # print(People.x)
    # People.x=11111

    # print(id(People.x),People.x)
    # obj.x='obj================》'
    # print(id(obj.x),obj.x)
    # print(id(obj1.x),obj1.x)
    # print(id(obj2.x),obj2.x)


    #2、类的函数属性:也是给对象用,但是绑定给对象用的,绑定到不同的对象就是不同的
    #绑定方法,内存地址都不一样,但其实只想都是同一个功能
    # print(People.run) #<function People.run at 0x00000226E7C78A60>
    # People.run(123123)
    # People.run(obj)

    # print(obj.run)
    # print(obj1.run)
    # print(obj2.run)

    #四:绑定方法的特殊之处:
    #1、 绑定给谁就应该由谁来调用,
    #2、谁来调用就会把谁当做第一个参数传入
    # class People:
    # x=1
    # def __init__(self,name,age,sex):
    # self.name=name
    # self.age=age
    # self.sex=sex
    #
    # def run(self): #self=obj
    # print('%s is running' %self.name) #obj.name
    #
    # def f1():
    # print('from f1')
    #
    # def f2(self):
    # pass

    # obj=People('egon',18,'male') #People.__init__(obj,'egon',18,'male')
    # obj1=People('egon1',18,'male') #People.__init__(obj,'egon',18,'male')
    # obj2=People('egon2',18,'male') #People.__init__(obj,'egon',18,'male')
    #
    # obj.run()
    # obj1.run()
    # obj2.run()

    # print(People.f1)
    # People.f1()
    # print(obj.f1)
    # obj.f1() #People.f1(obj)


    #五:一切皆对象:在python3中统一了类与类型的概念,类即类型
    # l=list([1,2,3])
    # print(type(l))

    # print(type(obj))

    # l.append(4)

    小游戏:
    人狗大战

    class People:
    def __init__(self,name,aggresivity,life_value=100):
    self.name=name
    self.aggresivity=aggresivity
    self.life_value=life_value
    def bite(self,enemy):
    enemy.life_value-=self.aggresivity
    print("""
    人【%s】 咬了一口狗 【%s】
    狗掉血【%s】
    狗还剩血量【%s】
    """%(self.name,enemy.name,self.aggresivity,enemy.life_value))
    class Dog:
    def __init__(self,name,dog_type,aggresivity,life_value):
    self.name = name
    self.dog_type=dog_type
    self.aggresivity = aggresivity
    self.life_value = life_value

    def bite(self,enemy):
    enemy.life_value -= self.aggresivity
    print("""
    狗【%s】 咬了一口人 【%s】
    人掉血【%s】
    人还剩血量【%s】
    【%s】挂掉了
    """ % (self.name, enemy.name, self.aggresivity, enemy.life_value,enemy.name))
    p1=People('小春',50)
    d1=Dog('旺财','哈士奇',100,100)
    p1.bite(d1)
    d1.bite(p1)


  • 相关阅读:
    05day02wdt
    05day02pwm
    05day01ioctl_led
    04clock_06semqphore
    04lock_05seqlock
    04lock_03rwlock
    [git]入门-工作区、暂存区、版本库
    [git]入门-创建版本库
    [linux-脚本]shebang(shabang #!)
    [ffmpeg]安装
  • 原文地址:https://www.cnblogs.com/yangwei666/p/8795921.html
Copyright © 2011-2022 走看看