python学习笔记 day22 面向对象(三)

1. 使用类实现人狗大战

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
        print('%s被咬了,掉了%s的血'%(person.name,self.aggr))
class Person():
    def __init__(self,name,blood,aggr,sex):
        self.name=name
        self.blood=blood
        self.aggr=aggr
        self.sex=sex
    def attack(self,dog):
        dog.blood-=self.aggr
        print('%s被打了,掉了%s的血'%(dog.name,self.aggr))

p=Person('璇璇',10,3,'')
d=Dog('lucky',100,2,'狗子')
p.attack(d)
d.bite(p)

运行结果:

2. 在终端输出如下信息:

class Info():
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    def view(self):
        print("%s ,%s岁,%s,%s"%(self.name,self.age,self.sex,'上山去砍柴'))
        print("%s ,%s岁,%s,%s"%(self.name,self.age,self.sex,'开车去东北'))
        print("%s ,%s岁,%s,%s"%(self.name,self.age,self.sex,'最爱大保健'))

p1=Info('小明',10,'')
p2=Info('老李',90,'')
p1.view()
p2.view()

运行结果:

版本二(Eva-J)

class Info():
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    def firewood(self):
        print("%s ,%s岁,%s,%s"%(self.name,self.age,self.sex,'上山去砍柴'))
    def drive(self):
        print("%s ,%s岁,%s,%s"%(self.name,self.age,self.sex,'开车去东北'))
    def favor(self):
        print("%s ,%s岁,%s,%s"%(self.name,self.age,self.sex,'最爱大保健'))

p1=Info('小明',10,'')
p1.firewood()
p1.drive()
p1.favor()
p2=Info('老李',90,'')
p2.firewood()
p2.drive()
p2.favor()

这个更好,把牵涉到的动作都用类里面的方法来实现了~,挺好的~

1.当有几个函数需要反反复复传入几个相同的参数时就可以考虑用面向对象;这几个参数就是对象的属性;

 2.当非常明显的想要处理一类事物,这些事物具有相似的属性和功能时,可以考虑面向对象;

3. 使用面向对象思想实现一个圆:求周长和半径

from math import pi
class Circle():
    def __init__(self,r):
        self.r=r
    def perimeter(self):
        return 2*pi*self.r
    def area(self):
        return pi*self.r**2
circle=Circle(10)
print(circle.perimeter())
print(circle.area())

运行结果:

talk is cheap,show me the code
原文地址:https://www.cnblogs.com/xuanxuanlove/p/9662198.html