码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象 初识

时间:2017-09-14 20:18:10      阅读:164      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!