学习内容
1.初识面向对象
类:抽象的,模子
对象:具体的,根据类规范
代码精简,修改方便,属性规范
2.对象
查看属性
调用方法
__dict__,增删改查,通过字典语法进行
3.类名
1.实例化
2.调用方法
3.调用静态属性
__dict__,类中的名字,只能看
4.面向对象情况
1.一类事物,有相似的属性和功能
2.当有几函数,需要反复传入相同的参数,可以考虑面向对象
代码区
1.人狗大战,闭包
def Dog(name, blood, aggr, kind): dog = { 'name': name, 'blood': blood, 'aggr': aggr, 'kind': kind, } def bite(human): human['blood'] -= dog['aggr'] print('%s被咬了,掉了%s的血' % (human['name'], dog['aggr'])) dog['bite'] = bite return dog def Human(name, blood, aggr, gender): human = { 'name': name, 'blood': blood, 'aggr': aggr, 'gender': gender, } def attack(dog): dog['blood'] -= human['aggr'] print('%s被打了,掉了%s的血' % (dog['name'], human['aggr'])) human['attack'] = attack return human dog1 = Dog('泰迪', 536, 120, 'teddy') human1 = Human('小明', 835, 235, 'None') print(human1) human1['attack'](dog1)
2.面向对象,操作
class Person: country = 'China' def __init__(self,*args): self.name = args[0] self.hp = args[1] self.aggr = args[2] self.sex = args[3] def walk(s): print('%s走走'%s.name) alex = Person('A',12,1,'B') print(alex.country) Person.walk(alex)
3.面向对象,人狗大战
class Dog: def __init__(self,name,blood,aggr,kind): self.name = name self.blood = blood self.aggr = aggr self.kind = kind def bite(self,person): person.blood -= self.aggr class Person: def __init__(self,name,blood,aggr,gender): self.name = name self.blood = blood self.aggr = aggr self.gender = gender def attack(self,dog): dog.blood -= self.aggr J = Dog('Boss Kim',100,20,'teddy') alex = Person('Alex',999,998,'None') alex.attack(J) print(J.blood)
4.面向对象——打印
class Person: def __init__(self,name,age,gender): self.name = name self.age = age self.gender = gender def affair(self): print("%s,%s岁,%s,上山去砍柴"%(self.name, self.age,self.gender)) print("%s,%s岁,%s,开车去东北" % (self.name, self.age, self.gender)) print("%s,%s岁,%s,最爱大保健" % (self.name, self.age, self.gender)) xiaoming = Person('小明','10岁','男') xiaoming.affair() laozhang = Person('老张','100岁','None') laozhang.affair()
5.计算圆的周长,面积
from math import pi class Circle: def __init__(self,radius): self.radius = radius def premeter(self): return 2*pi*self.radius def area(self): return pi*self.radius*self.radius c1 = Circle(1) print(c1.area()) print(c1.premeter())