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

day23 面向对象

时间:2017-11-17 16:20:02      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:实例化   job   小明   bsp   导入   __init__   迭代   oss   正则   

 

 

 

最近两周内容大概回顾:

技术分享图片
# 文件操作
#
# 模块:random,序列化模块,时间模块,collections,re,os,sys
# 模块与包的概念和导入方法
# 写代码的规范
# 正则表达式
# 异常处理
#
# 函数:
# 函数的命名空间和作用域
# 内置函数
# 闭包 : 装饰器函数
# 生成器函数:生成器表达式,各种推导式,迭代器
# 匿名函数
# 递归函数 : 二分查找算法



#作业1
# 基础数据类型
# 文件操作
# 函数
# 模块
# 面向对象
# 网络编程(空)
# 线程进程协程、IO多路复用(空)
# 其他

# 序列化模块——shelve
# import shelve
# f = shelve.open(‘ff‘)
# f[‘key‘] = {‘k1‘:‘v1‘}
# f.close()
# f = shelve.open(‘ff‘,flag=‘r‘)  # 只读
# f[‘key‘] = [1,2,3]
# f.close()
# f = shelve.open(‘ff‘)
# print(f[‘key‘])
# f.close()
View Code

 

今天内容概要:

# 认识面向对象
# 了解面向对象编程
# 基础的 类 对象的语法


初识面向对象:
技术分享图片
#生命值 100
#攻击力 10
#名字 XXX
#职业 XXX
def Person(life_value,aggr,name,job):
    def attack(dog):
        print(%s 攻击了 %s % (person[name], dog[name]))
        dog[life_value] = dog[life_value] - person[aggr]
    person = {     #模子
        life_value:life_value,#生命值
        aggr:aggr, #aggressive攻击力
        name:name,
        job : job,
        attack : attack
    }
    return person

boss_gold = Person(1000,2,金老板,boss)
alex = Person(250,250,alex,big_boss)
# print(boss_gold[‘life_value‘])

def Dog(name,life_value,aggr,kind):
    def bite(person):
        print(%s 咬了 %s % (dog[name], person[name]))
        person[life_value] -= dog[aggr]
    dog ={
        name:name,
        life_value:life_value,
        aggr : aggr,
        kind : kind,
        bite : bite
    }
    return dog
alph = Dog(alphgou,10000,999,AI)
flower = Dog(小花,150,300,2ha)
alph[bite](boss_gold)
alex[attack](flower)

#这就是面向对象编程
#面向对象编程 是一种思想
#对象就是具体的拥有准确属性值的一些变量
#类:一类具有相同属性和方法的事物
#字典 _ 类
d1 = {k1:v1}  #对象
#动物园:老虎 狮子 猴


# attack(boss_gold,flower)
# print(flower[‘life_value‘])
# bite(alph,alex)
# print(alex[‘life_value‘])
View Code

 

 

面向对象:

技术分享图片
def 函数名():
    ‘‘‘函数体‘‘‘
    pass

# class Person:  #类名有两个作用
#     country = ‘中国‘   #静态属性、数据属性
#     def walk(self):    #动态属性、函数属性、方法
#         print(‘walk‘)

#1.属性引用
# print(Person.country) #静态属性的查看
# print(Person.walk)
# Person.role = ‘人‘  #添加一个新静态属性
# Person.country = ‘印度‘  #修改一个新静态属性
# del Person.role #删除一个静态属性
# print(Person.__dict__)
# print(Person.walk())  #报错 少self参数
# Person.__dict__[‘country‘] = ‘印度‘  #报错 不能改变
# print(Person.__dict__[‘country‘])
# print(Person.country)

#类能完成的第二个功能:实例化对象
#实例化:从一个类中创造一个具体的对象的过程
# p = Person()
# print(p)  #Person的对象


# class Person:  #类名有两个作用
#     country = ‘中国‘   #静态属性、数据属性
#     def __init__(self,life_value,aggr,name,job): #初始化方法
#         #self = {‘lv‘:life_value}
#         self.lv = life_value     #属性,对象属性
#         self.aggr = aggr
#         self.name = name
#         self.job = job
#     def walk(self):    #动态属性、函数属性、方法
#         print(‘%s is walking‘%self.name)
#
# # p = Person()  #如何让对象拥有具体的属性
# p = Person(1000,2,‘金老板‘,‘boss‘)  #如何让对象拥有具体的属性
# p.walk()  # Person.walk(p)
# print(p.lv)  #Person的对象
# print(p.aggr)  #Person的对象
# print(p.name)  #Person的对象
# print(p.job)  #Person的对象
# p.sex = ‘lady_boy‘  #添加一个属性
# print(p.sex)
# p.sex = ‘girl‘  #属性的修改
# print(p.sex)    #属性的删除
# del p.sex

# print(p.__dict__)
# print(p.__dict__[‘lv‘]) #查看
# p.__dict__[‘lv‘] = 998  #对象名.__dict__中的属性值可以被修改
# print(p.__dict__[‘lv‘],p.lv)
# p.__dict__[‘sex‘] = ‘lady_boy‘ #对象名.__dict__中的属性值可以增加
# print(p.__dict__,p.sex)
# p.__dict__.pop(‘sex‘)  #对象名.__dict__中的属性值可以被删除
# print(p.__dict__)
#
# 类的定义 class关键字 类名的首字母大写
# 类中直接定义属性:静态属性(变量) 和 动态属性(函数)
# 类名的两个作用:属性的引用,实例化对象
# 类名和属性的操作:对象名.属性名 对象名.__dict__[‘属性名‘](不能修改)

#实例化 ——类名(参数)
#构造方法:造对象
#初始化__init__:给这个赤裸裸的对象添加一些属性 __init__
#返回了一个初始化之后的对象

#__init__方法:初始化方法,可以没有。给对象添加一些必要的基础属性

#self的含义:就是这个对象本身

#对象和属性的操作:对象名.属性名 对象名.__dict__[‘属性名‘]

class Person:  #类名有两个作用
    country = 中国   #静态属性、数据属性
    def __init__(self,life_value,aggr,name,job): #初始化方法
        #self = {‘lv‘:life_value}
        self.lv = life_value     #属性,对象属性
        self.aggr = aggr
        self.name = name
        self.job = job
    def walk(self):    #动态属性、函数属性、方法
        print(%s is walking%self.name)

boss_gold = Person(10,1,太白太黑太亮,old_driver)
alex =  Person(100,2.5,张嘴闭嘴tesla,鸡汤哥)
# boss_gold.walk()
# alex.walk()
boss_gold.sex = None
print(alex.__dict__)
View Code

 

面向对象交互:

 

技术分享图片
#人类 :
# 属性 :life_value,aggr,name,job
# 方法: attack
class Person:
    def __init__(self,life_value,aggr,name,job):
        self.life = life_value
        self.aggressive = aggr
        self.name = name
        self.job = job

    def attack(self,dog_obj):   #boss_gold,tiedan
        print(%s 攻击了 %s%(self.name,dog_obj.name))
        dog_obj.life = dog_obj.life - self.aggressive

#狗类:
# 属性:life_value,aggr,name,kind
# 方法:bite
class Dog:
    def __init__(self,life_value,aggr,name,kind):
        self.life = life_value
        self.aggressive = aggr
        self.name = name
        self.kind = kind

    def bite(self,person_obj):
        print(%s 咬了 %s % (self.name, person_obj.name))
        person_obj.life -= self.aggressive


tiedan = Dog(1000,100,铁蛋,土狗)
boss_gold = Person(100,2.5,太黑,old_driver)
# boss_gold.attack(tiedan)  #Person.attack(boss_gold,tiedan)
# print(tiedan.life)
# tiedan.bite(boss_gold)
# print(boss_gold.life)
#三个攻击技能

#面向对象的交互
# 作业零:画图
# 基础数据类型
# 文件操作
# 函数
# 模块
# 面向对象
# 网络编程(空)
# 线程进程协程、IO多路复用(空)
# 其他

# 练习一:在终端输出如下信息
#
# 小明,10岁,男,上山去砍柴
# 小明,10岁,男,开车去东北
# 小明,10岁,男,最爱大保健
# 老李,90岁,男,上山去砍柴
# 老李,90岁,男,开车去东北
# 老李,90岁,男,最爱大保健
# 老张…

# 练习二:
#创造一个圆形类,属性:半径,两个方法:求周长,求面积

# 练习三:
#继续写人狗大战游戏

# 预习:http://www.cnblogs.com/Eva-J/articles/7293890.html

# 周末:神经网络公开课
View Code

 

技术分享图片技术分享图片技术分享图片技术分享图片技术分享图片技术分享图片技术分享图片技术分享图片

 

day23 面向对象

标签:实例化   job   小明   bsp   导入   __init__   迭代   oss   正则   

原文地址:http://www.cnblogs.com/2012-dream/p/7851618.html

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