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参数直接指向这个对象。

 

posted @ 2018-04-10 19:27  大叔级别  阅读(135)  评论(0编辑  收藏  举报