面向对象

Posted python052044

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象相关的知识,希望对你有一定的参考价值。

 

 pass

 

 

二. 面向对象的事例:

1. 计算圆和正方形的周长面积

技术分享图片
from math import pi              #引用模块pi
class Circle:                    #定义个类
    def __init__(self,r):        #定义动态属性
        self.r=r                 #对象属性
    def area(self):              #定义行为函数
        return self.r**2*pi      #执行行为内容
    def perimeter(self):         #定义行为函数
        return pi*2*self.r       #执行行为内容
c1=Circle(5)                     #实例化:创造对象

print(c1.r)                      #打印半径r
print(c1.area())                 #打印执行area函数结果
print(c1.perimeter())            #打印执行perimeter函数结果


class Square:
    def __init__(self,r):
        self.r=r
    def area(self):
        return self.r**2
    def perimeter(self):
        return self.r*4
a=Square(4)
print(a.area())
print(a.perimeter())
View Code

 2.小明老王去东北

技术分享图片
class  Penson:
    def __init__(self,name,sex,age):
        self.name=name
        self.sex=sex
        self.age=age
    def dirve(self):
        print(%s,%s,%s岁,开车去东北%(self.name,self.sex,self.age))

    def climb(self):
        print(%s,%s,%s岁,开车去东北 % (self.name, self.sex, self.age))
    def hobby(self):
        print(%s,%s,%s岁,开车去东北%(self.name,self.sex,self.age))

ming=Penson(小明,,10)
zhang=Penson(老张,,90)

ming.dirve()
ming.climb()
ming.hobby()

zhang.dirve()
zhang.climb()
zhang.hobby()

‘‘‘
老张小明都是人属于同一类不同对象,可以先定义一个类,定义相同的动态属性名字性别年龄,
然后定义三个不同的行为:
    dirve()
    climb()
    hobby()
实例化两个对象代入小明和老张传入属性:
    ming
    zhang
调用对象属性和类中的方法
View Code

3.人狗大战

技术分享图片
class Person:
    def __init__(self,name,sex,aggr,hp):
        self.name=name
        self.sex=sex
        self.aggr=aggr
        self.hp=hp
    def attack(self,dog):
        print(%s打了%s%(self.name,dog.name))
        dog.hp -= self.aggr

class Dog:
    def __init__(self,name,kind,aggr,hp):
        self.name=name
        self.kind=kind
        self.aggr=aggr
        self.hp=hp
    def bite(self,person):
        print(%s咬%s%(self.name,person.name))
        person.hp-=self.aggr
hei=Dog(小黑,teddy,260,1000)
bai=Dog(小白,teedy,260,1000)
alex=Person(alex,female,1,250)
egon=Person(egon,female,1,250)


alex.attack(hei)
egon.attack(bai)
print(hei.hp)
hei.bite(alex)
print(alex.hp)


‘‘‘
人狗大战,
不同的人属性相同,属性值不同,定义一个类Person,动态属性(name,sex,aggr,hp)
定义人的行为,人打狗,狗掉血,狗的血量等于原血量减去人的攻击力
不同的狗属性相同,属性值不同,定义一个类Dog,动态属性(name,kind,aggr,hp)
定义狗的行为,狗咬人,人掉血,人的血量等于原血量减去狗的攻击力

实例化创造对象两个狗两个人:
    hei         属于狗,只能执行Dog“类”下的行为bite
    bai         属于狗,只能执行Dog“类”下的行为bite
    alex        属于人,只能执行Person“类”下的行为attack
    egon        属于人,只能执行Person“类”下的行为attack
        
对象调用
人打狗,执行人“类”下的行为attack
查看狗剩余血量
狗咬人,执行狗“类”下的行为bite
查看狗剩余血量
‘‘‘
View Code

 

以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

PHP面向对象之选择工厂和更新工厂

Java中面向对象的三大特性之封装

python之路之前没搞明白4面向对象(封装)

Scala的面向对象与函数编程

Python面向对象学习之八,装饰器