zoukankan      html  css  js  c++  java
  • 4--10 面向对象初始

        面向对象

    1,类的概念,具有相同属性和技能的一类事物(抽象)。对象就是对于一个类的具体的描述(具体)。

    下面是关于人和狗打架的游戏:

    def Person(name,sex,hp,ad):
        self = {'name':name,'sex':sex,'hp':hp,'ad':ad}
        def attack(dog):
            print('%s攻击%s'%(self['name'],dog['name']))
            dog['hp'] -= self['ad']
        self['attack'] = attack
        return self
    def Dog(name,kind,hp,ad):
        self = {'name':name,'kind':kind,'hp':hp,'ad':ad}
        def bite(person):
            print('%s咬了%s'%(self['name'],person['name']))
            person['hp'] -= self['ad']
            if person['hp'] <= 0:print('game over,%s win'%self['name'])
        self['bite'] = bite
        return self
    
    alex = Person('a_sb','不详',1,5)
    boss_jin = Person('金老板','',2,50)
    chen = Dog('旺财','Teddy',50,20)
    alex['attack'](chen)
    print(chen['hp'])
    View Code

    使用面向对象的好处:

      1,使得代码之间的角色关系更加明确。

      2,增强了代码的可扩展性。

      3,约束了对象的属性和技能。

    面向对象的特点:    结局的不确定性。

    2,面向对象的语法:

    class 类  + 首字母大写

    class Person:
        role = '232'
        def f1(self):
            print(123145)
    Person.f1()

    类名:1,引用静态变量

    class Person:
        static = 123
    print(Person.__dict__)

      1,第一种查看方法:类名.__dict__['静态变量'],可以查看,但不能删改

      {'__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__doc__': None, 'static': 123}

      2,第二种查看方法:类名.静态变量名,直接就可以访问,可以删改,删除一个静态变量,del Person.静态变量

    class Person:
        roue = 'ahhf'
    Person.roue = 'jiji'
    print(Person.roue)

    2,引用动态变量

    1,类名  .  方法名,查看这个方法的内存地址。

    class Person:
        静态变量 = 123
        role = 'person'
        def f1(self):#默认带一个参数self,方法,动态属性
            print(12345)
    print(Person.f1)#<function Person.f1 at 0x000001DC04846950>

    2,类名  .  方法名(实参),调用了这个方法,必须传一个实参,这个实参传给了self

    class Person:
        静态变量 = 123
        role = 'person'
        def f1(self):#默认带一个参数self,方法,动态属性
            print(12345)
    Person.f1(1)#必须传一个实参给self 

    3,创造一个对象:类名 + 括号  Person()

    1,创造一个实例将会作为一个实际参数。

    2,自动触发一个__init__的方法,并且把实例以参数的形式,传递给__init__方法中的self形参。

    3,执行完__init__方法之后,会将self 自动返回给对象。

    class Person:
        role = 'asjj'
        def __init__(self):
            print(2423)
    alex = Person()

    __init__方法:就是初始化方法,给一个对象添加一些基础属性的方法,一般情况下是针对self 的赋值。

    class Person:
        role = 'person'
        def __init__(self,name,sex,hp,ad):
            self.name = name
            self.sex = sex
            self.hp = hp
            self.ad = ad
    
        def attack(self):
            print('%s发起了一次攻击'%self.name)
    
    alex = Person('alex','不详',2,4,)
    boss_jin = Person('金老板','',2,3)
    alex.attack()
    boss_jin.attack()

    对象

    1,在类的内部,self是本类的一个对象。

    2,在类的外部,每一个对象,都对应着一个名字,这个对象指向一个对象的内存空间。

    方法的调用:

    1,类名 . 方法名(对象名)那么方法中的self参数就指向这个对象。

    2,对象名.方法名() 这样写相当于方法中的self参数直接指向这个对象。

  • 相关阅读:
    浅谈flume
    浅谈storm
    浅谈zookeeper
    IntelliJ IDEA 使用教程
    浅谈spark
    添加本地jar包到maven仓库
    eclipse通过maven进行打编译
    pom.xml中添加远程仓库
    maven编译错误maven-assembly-plugin:2.2-beta-5:assembly (default-cli) on project
    最长上升子序列
  • 原文地址:https://www.cnblogs.com/yzxing/p/8781831.html
Copyright © 2011-2022 走看看