标签:person 流水线 参数 print strong 函数 dog pre logs
面向过程编程--函数--实现人狗大战
def person(*args): def attack(dog): print(‘%s 打了 %s‘%(dic[‘name‘],dog[‘name‘])) dic={‘name‘:args[0], ‘sex‘:args[1], ‘aggr‘:args[2], ‘blood‘:args[3], ‘attack‘:attack} # attack方法 ---- 放在字典里面 return dic def dog(*args): def bite(person): print(‘%s 咬了一口 %s‘%(dic[‘name‘],person[‘name‘])) dic={‘name‘:args[0], ‘sex‘:args[1], ‘aggr‘:args[2], ‘blood‘:args[3], ‘bite‘:bite # bite方法 放在字典里面 } return dic egg=person(‘egon‘,‘female‘,200,250) # 人 字典 alex=dog(‘alex‘,‘female‘,200,250) # 狗 字典 egg[‘attack‘](alex) alex[‘bite‘](egg)
面向过程编程----面向结果去编程---一个流水线----可扩展性差---容易引起代码错误
面向对象的编程
面向对象的思想:
对象 就是一个实实在在的,可以准确的描述出来的实体,比如说egg,alex
类 就是具有相同属性和方法的一类事物
=======
类的定义
=======向对象编程 --定义一个类
class 类名(首字母大写) class Person:
role=‘Person‘ # 类的属性 (静态属性) 共性的属性 | 所有对象共有的 类属性调用
def __init__(self,name,sex=‘male‘): # 实例化的时候 会自动用__init__方法
对象属性 ----- 只属于对象----只有实例化的对象--调用 self.role=‘person‘ self.sex=sex self.name=name # self 相当于一个字典 self.name 相当于字典的key 后面相当于字典的对应的value
def attack(self): # 类里面的所有方法都是 函数 ---有一个必须要传的参数 ---self print(‘%s 是一个人‘%self.role)
alex=Person() 实例化 当你用一个对象去调用他的方法的时候 自动传一个参数,这个参数就是对象本身
alex = Person(name=‘alex‘,sex=‘male‘) 实例化 print(alex.name,alex.role,alex.sex,alex.role) 调用属性 方法 alex.attack() egon=Person(‘egon‘) print(egon.name,egon.sex,egon.role)
需要 反复传传递 相同的参数 给一些函数的时候---面向对象
类属性-------静态属性
对象的方法----动态方法
对象的属性----普通属性
对象名---调用对象的属性(类属性--不要调用)----动用对象的方法
类名----调用类的属性---动用类方法
例子 1 class Person(): male=‘男‘ def __init__(self,name,age): self.name=name self.age=age def action(self,acting): self.act=acting print(‘%s, %s岁,%s,%s‘%(self.name,self.age,self.male,self.act)) li=[‘上山去砍柴!‘,‘最爱大保健!‘,‘开车去东北!‘] for i in li: a = Person(‘小明‘, 10) a.action(i) for i in li: b=Person(‘老李‘,90) b.action(‘最爱大保健!‘) 小明, 10岁,男,上山去砍柴! 小明, 10岁,男,最爱大保健! 小明, 10岁,男,开车去东北! 老李, 90岁,男,最爱大保健! 老李, 90岁,男,最爱大保健! 老李, 90岁,男,最爱大保健!
例子 2 类的互相调用 class Person: role=‘person‘ def __init__(self,name,sex,age,aggr=200,blood=20000): self.name=name self.sex=sex self.age=age self.aggr=aggr self.blood=blood def attack(self,person): person.blood-=self.aggr class Dog: role=‘Dog‘ def __init__(self,race,sex,age,aggr=2000,blood=4000): self.race=race self.sex=sex self.age=age self.blood=blood self.aggr=aggr def bite(self,person): self.blood-=person.aggr
例子3 圆形类 -计算周长面积 import math class Circle: def __init__(self,r): self.r=r self.pi = math.pi def area(self): return self.r**2*self.pi def Length(self): return 2*self.r*self.pi circle=Circle(10) area=circle.area() le=circle.Length() print(‘面积是:%s‘%area) print(‘周长是:%s‘%le)
标签:person 流水线 参数 print strong 函数 dog pre logs
原文地址:http://www.cnblogs.com/big-handsome-guy/p/7522253.html