zoukankan      html  css  js  c++  java
  • 面向对象

    # 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()
    # print(p.lv)
    # print(p.name)
    # print(p.job)
    # p.sex = 'xiaoxiao' #添加一个属性
    # print(p.sex)
    # print(p.__dict__)
    # p.sex = 'girl' #属性的修改
    # print(p.sex)
    # del p.sex

    # print(p.__dict__)
    # print(p.__dict__['lv'])#查看
    # p.lv = '998'
    # print(p.lv)
    # p.__dict__['lv'] = 998#对象名.__dict__中的属性值可以被修改
    # print(p.__dict__['lv'])
    # p.__dict__['sex'] = 'lady_boy'#对象名.__dict__中的属性值可以增加
    # print(p.__dict__)
    # 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__)


    # 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做 < 人狗大战 > 的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢?
    #
    # 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色
    # def person(name,age,sex,job):
    # data = {'name':name,
    # 'age':age,
    # 'sex':sex,
    # 'job':job}
    # return data
    # def dog(name,dog_type):
    # data = {'name':name,
    # 'type':dog_type
    # }
    # return data
    # # 上面两个方法相当于造了两个模子,游戏里的每个人和每条狗都拥有相同里的属性。游戏开始,你根据一个人或一只狗传入的具体信息来塑造一个具体的人或者狗,怎么生成呢?
    # d1 = dog('师功哲','土狗')
    # p1 = person('朱博',23,'f','python')
    # # 两个角色对象生成了,狗和人还有不同的功能呀,狗会咬人,人会打狗,对不对? 怎么实现呢,。。想到了, 可以每个功能再写一个函数,想执行哪个功能,直接 调用 就可以了,对不?
    # def bark(d):
    # person('dog%s:wang.wang...'%d['name'])
    # def walk(p):
    # print('person %s is walking..'%p['name'])
    # walk(p1)
    # bark(d1)
    # 事实 上,从你写的代码上来看,这并没出错。很显然,人是不能调用狗的功能的,但在你的程序例没有做限制,如何在代码级别实现这个限制呢?
    # def person(name, age, sex, job):
    # def walk(p):
    # print("person %s is walking..." % p['name'])
    #
    # data = {
    # 'name': name,
    # 'age': age,
    # 'sex': sex,
    # 'job': job,
    # 'walk': walk
    # }
    # return data
    # def dog(name, dog_type):
    # def bark(d):
    # print("dog %s:wang.wang..wang..." % d['name'])
    # data = {
    # 'name': name,
    # 'type': dog_type,
    # 'bark': bark
    # }
    # return data
    # d1 = dog("李磊", "京巴")
    # p1 = person("严帅", 36, "F", "运维")
    # p2 = person("egon", 27, "F", "Teacher")
    # d1['bark'](p1) #把人传给了狗的方法


    # import random
    # class Ren:
    # def __init__(self,life_value,agger,name,job):
    # self.lv =life_value
    # self.agger=agger
    # self.name =name
    # self.job=job
    # def attack(self,gou):
    # i = random.randrange(2)
    # print("%s 攻击了 %s"%(self.name ,gou.name ))
    # if i == 0:
    # print("%s闪避了%s的攻击"%(gou.name ,self.name ))
    # else:
    # gou.lv -=self.agger
    # print("%s血量%d"%(gou.name ,gou.lv ))
    # class Gou:
    # def __init__(self,life_value,agger,name,king):
    # self.lv = life_value
    # self.agger = agger
    # self.name = name
    # self.king = king
    #
    # def attack(self, ren):
    # i = random.randrange(2)
    # print("%s 攻击了 %s" % (self.name , ren.name ))
    # if i ==0:
    # ren.lv =ren.lv - self.agger*2
    # print("暴击-%d"%(self.agger*2))
    # else:
    # ren.lv =ren.lv - self.agger
    # print("%s血量%d" % (ren.name
    #
    # , ren.lv ))
    #
    # dahuang=Gou(100,20,"大黄","狼狗")
    # jin=Ren(100,20,"老金","奶爸")
    # # jin.attack(dahuang)
    # # # print(dahuang.lv )
    # # print("++++++++++")
    # # dahuang.attack(jin)
    # while dahuang.lv >0 and jin.lv >0:
    # jin.attack(dahuang)
    # print(" ")
    # dahuang.attack(jin)
    # print("------------")
  • 相关阅读:
    PerfDog
    adb 常用操作
    netstat命令(net-tools)
    资源路径总结:
    四个作用域对象:
    jsp的 九大内置对象
    Jsp 的语法和指令
    JSP 学习
    server.xml 文件:
    Web.xml 文件使用总结:
  • 原文地址:https://www.cnblogs.com/zhuchuanbo/p/7852958.html
Copyright © 2011-2022 走看看