VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • python基础(23):面向过程与面向对象的优劣、初识面向对象(2)

# 每一个人都有自己的性别;
  •  
  •   def eat(self,food):
  •     # 人可以吃食物,这里的食物也是一个对象。
  •     # 人吃食物,那么食物的数量会随着人吃的次数而下降
  •     food.num -= self.num
  • 对象是关于类而实际存在的一个例子,即实例

    对象只有一种作用:属性调用

    
    	
    1. p = Person('egon',20,'男')
    2. print(p.name)
    3. print(p.age)
    4. print(p.gender)

    当然了,你也可以引用一个方法,因为方法也是一个属性,只不过是一个类似函数的属性,我们也管它叫动态属性。 引用动态属性并不是执行这个方法,要想调用方法和调用函数是一样的,都需要在后面加上括号。

    
    	
    1. print(p.eat)

    我知道在类里说,你可能还有好多地方不能理解。那我们就用函数来解释一下这个类呀,对象呀到底是个啥,你偷偷的用这个理解就好了,不要告诉别人,毕竟一万个人眼里就有一万个哈姆雷特。

    
    	
    1. def Person(*args,**kwargs):
    2.   self = {}
    3.   def attack(self,dog):
    4.     dog['life_value'] -= self['aggressivity']
    5.  
    6.   def __init__(name,aggressivity,life_value):
    7.     self['name'] = name
    8.     self['aggressivity'] = aggressivity
    9.     self['life_value'] = life_value
    10.     self['attack'] = attack
    11.  
    12.   __init__(*args,**kwargs)
    13.   return self
    14.  
    15. egg = Person('egon',78,10)
    16. print(egg['name'])

    面向对象小结——定义及调用的固定模式

    
    	
    1. class 类名:
    2.   def __init__(self,参数1,参数2):
    3.     self.对象的属性1 = 参数1
    4.     self.对象的属性2 = 参数2
    5.  
    6.   def 方法名(self):pass
    7.  
    8.   def 方法名2(self):pass
    9.  
    10. 对象名 = 类名(1,2) #对象就是实例,代表一个具体的东西
    11. #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法
    12. #括号里传参数,参数不需要传self,其他与init中的形参一一对应
    13. #结果返回一个对象
    14. 对象名.对象的属性1 #查看对象的属性,直接用 对象名.属性名 即可
    15. 对象名.方法名() #调用类中的方法,直接用 对象名.方法名() 即可

    4.2 对象之间的交互

    现在我们已经有一个人类了,通过给人类一些具体的属性我们就可以拿到一个实实在在的人。 现在我们要再创建一个狗类,狗就不能打人了,只能咬人,所以我们给狗一个bite方法。 有了狗类,我们还要实例化一只实实在在的狗出来。 然后人和狗就可以打架了。现在我们就来让他们打一架吧!

    4.2.1 创建一个狗类和人类

    
    	
    1. class Dog: # 定义一个狗类
    2.   role = 'dog' # 狗的角色属性都是狗
    3.  
    4.   def __init__(self, name, breed, aggressivity, life_value):
    5.     self.name = name # 每一只狗都有自己的昵称;
    6.     self.breed = breed # 每一只狗都有自己的品种;
    7.     self.aggressivity = aggressivity # 每一只狗都有自己的攻击力;
    8.     self.life_value = life_value # 每一只狗都有自己的生命值;
    9.  
    10.   def bite(self,people):
    11.     # 狗可以咬人,这里的狗也是一个对象。
    12.     # 狗咬人,那么人的生命值就会根据狗的攻击力而下降
    13.     dog.life_value -= self.aggressivit
    
    	
    1. class Person: # 定义一个人类
    2.   role = 'person' # 人的角色属性都是人
    3.  
    4.   def __init__(self, name, aggressivity, life_value):
    5.     self.name = name # 每一个角色都有自己的昵称;
    6.     self.aggressivity = aggressivity # 每一个角色都有自己的攻击力;
    7.     self.life_value = life_value # 每一个角色都有自己的生命值;
    8.  
    9.   def attack(self,dog):
    10.     # 人可以攻击狗,这里的狗也是一个对象。
    11.     # 人攻击狗,那么狗的生命值就会根据人的攻击力而下降
    12.     dog.life_value -= self.aggressivity

    4.2.2 实例化一只狗和人

    
          
    
    
    
      
    
    相关教程