day 17 初识面向对象

初识面向对象:
   类的概念: 具有相同属性和技能的一类事物

   例如:商品(未知的商品)

   对象:就是对一个类的具体的描述

   具体的某人   具体

 

使用面向对象的好处:
  使得代码之间的角色关系更加明确

  增强了代码的可扩展性

  规范了对象的属性和技能

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

 

导入类:

  class Person:   #定义一个人类 role = 'person'  #人的角色属性都是人
    def walk(self):  #人都可以走路,也就是有一个走路方法,也叫动态属性
        print("person is walking...")

 

 

查看静态变量的第一种方式:

  内置的双下划线方法:

    print(类名.__dict__)

    print(类名.__dict__['静态变量])

    Person.__dic__[‘静态变量’] = 值   #会报错

    

查看静态变量的第二种方式:

  print(Person.静态变量)  

  print(Person.静态变量名)     #返回静态变量值

  Person.静态变量 = 456   给静态变量重新赋值

  del Person.静态变量   删除静态变量

  print(Person.__dict__)

 

#类名:

  引用静态变量:

    1.类名.__dict__['静态变量名] 可以查看,但是不能删改

    2.类名.静态变量名   直接就可以访问,可以删改

        删除一个静态变量del  类名.静态变量名

  引用动态变量:

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

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

 

  创建一个对象——实例化:

    1.像产生一个实例(对象)的过程

    对象= 变量名()

    

例如:

  alex = Person()  创造一个对象

  alex 是对象,实例

Person 是类

对象 = 类名()

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('a_sb','不详',1,5)
boss_jin = Person('金老板','',20,50)

alex.attack()      # Person.attack(alex)
boss_jin.attack()  # Person.attack(boss_jin)

alex = Person('a_sb','不详',1,5)

alex.__dict__['name'] = 'alex'

print(alex.name)

alex.name = 'a_sb'

print(alex.name)

boss_jin == Person('金老板','女',20,50)

print(boss_jin.name)

 

实例化的过程:

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

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

    3.执行完__init__方法之后,会将self自动返回给alex

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


对象
在类的内部 self是本类的一个对象
在类的外部,每一个对象都对应着一个名字,这个对象指向一个对象的内存空间
属性的调用:
对象名.属性名 第一种调用方法
对象名.__dict__['属性名'] 第二种调用方法
方法的调用 :
类名.方法名(对象名) # 那么方法中的self参数就指向这个对象
对象名.方法名() # 这样写 相当于 方法中的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,d):
        d.hp -= self.ad
        print('%s攻击了%s,%s掉了%s点血'%(self.name,d.name,d.name,self.ad))

class Dog:
    def __init__(self,name,kind,hp,ad):
        self.name = name
        self.kind = kind
        self.hp = hp
        self.ad = ad
    def bite(self,p):
        p.hp -= self.ad
        print('%s咬了%s一口,%s掉了%s点血' % (self.name, p.name, p.name, self.ad))

alex = Person('a_sb','不详',1,5)
boss_jin = Person('金老板','女',20,50)
teddy = Dog('笨笨','teddy',50,10)
teddy.bite(alex)
print(alex.hp)
boss_jin.attack(teddy)
print(teddy.hp)

# alex.attack()      # Person.attack(alex)
# boss_jin.attack()  # Person.attack(boss_jin)

# 人和狗
# 4个技能 玩家可以选择技能
posted @ 2018-04-10 20:09  Coca-Mirinda  阅读(113)  评论(0)    收藏  举报