lg04551

导航

 

 面向对象

一、类的实例化:调用类产生对象的过程称为类的实例化,实例化的结果是一个对象,或称为一个实例

class People:

  def __init__(self,name,age,sex):

    self.name=name

    self.age=age

    self.sex=sex

  def run(self):

    print('%s is running'%self.name)

实例化做了三件事

1、先产生一个空对象

2、自动触发类内部__init__函数的执行

3、将空对象,以及调用类括号内传入的参数,一同传给__init__,为对象定制独有的属性

obj=People('egon',18,'male')=====>People.__init__(obj,'egon',18,'male')

会产生对象的名称空间,如何查看

print(obj._dict__)

二、对象的操作

1、查 print(obj.name)

2、增obj.education='aa'

3、删del obj.name

4、改obj.age=19

三、对象属性的查找顺序:先找对象自己的名称空间===>类的名称空间

class People:

  x=1

  def __init__(self,name,age,sex):

    self.name=name

    self.age=age

    self.sex=sex

  def run(self):

    print('%s is running'%self.name)

obj=People('egon',18,'male')

obj1=People('egon1',18,'male')

obj2=People('egon2',18,'male')

类的数据性性:是给对象用的,而且直接共享给所有对象用的,内存地址都一样

print(People,x)

People.x=11111

2、类的函数性性:也是给对象用,但是绑定给对象用的,绑定到不同的对象就是不同的

绑定方法,内存地址都不一样,但其实只是同一个功能

四:绑定方法的特殊之处:

1、绑定给谁就应该由谁来调用,

2、谁来调用就会把谁当做第一个参数传入

class People:

  x=1

  def__init__(self,name,age,sex):

    self.name=name

    self.age=age

    self.sex=sex

   def run(self):

    print('%s is running'%self.name)

   def f1(self):

    print('from f1')

   def f2(self):

    pass

obj=People('egon',18,'male')

五:一切皆对象:在python3中统一了类与类型的概念,类即类型

l=lise([1,2,3])

print(type(l))

<class 'list'>


  人狗大战

class People:

  def __init__(self,name,act,life_value=100):

    self.name=name

    self.act=act

    self.life_value=life_value

  def bite(self,enemy):

    enemy.life_value-=self.act

    print('''

     人[%S]咬了一口狗[%s]

     狗掉血[%s]

      狗还剩血量[%s]'''%(self,name,enemy.name,self.act,enemy.life_value) )

class Dog:

  def__init__(self,name,dog_type,act,life_value):

    self.name=name

    self.dog_type=dog_type

    self.act=act

    self.life_value=life_value

  def bite(self,enemy):

    enemy.life_value-=self.act

    print('''

      狗[%s]咬了一口人)

       人掉血[%s]

       人还剩血量[%s]'''%(self.name,enemy.name,self.act,enemy.life_value))

p1=People('lige',60)

d1=Dog('bb','cc',200,200)

p1.bite(d1)

d1.bite(p1)

 

posted on 2018-04-11 15:34  lg04551  阅读(93)  评论(0编辑  收藏  举报