#!/usr/bin/env python
# -*- coding:utf-8 -*-
# ------------------------------------------------------------
# 参考资料:
# 面向对象编程初步 - tonador - 博客园
# https://www.cnblogs.com/yujianbao/articles/6223482.html
#
# Python成长之路【第九篇】:Python基础之面向对象 - Mr_Albert - 博客园
# https://www.cnblogs.com/albert0924/p/8921709.html # Python 学习 --day-16 - UMRzg - 博客园
# http://www.cnblogs.com/qinzheg/articles/9394420.html
# ------------------------------------------------------------
# ******************** day24 面向对象设计part1 *******************
# ******************** day24 面向对象设计part1 *******************
# =====>>>>>>内容概览
# =====>>>>>>内容概览 # ------------------------------------------------------------
# # 1、对象概念引入
# # # 事物:狗狗; 特征:吃,叫;
# # # 一下的所有的与狗狗相关的探讨,都是要实现对所有不同狗狗的实现
# # # 下面的演示中,狗的特征与动作没有直接的关系,其他有某事物的特征也一样可以使用用该动作函数
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 2、对象概念深入探讨1
# # # 对狗的种类所具有的性质进行包装,但是具有一定的局限性,如果有多个狗的属性,每一个都要添加
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 3、对象概念深入探讨2
# # # 实现对多个属不同狗狗的属性的实现
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 4、对象概念深入探讨3
# # # 实现对多个属不同狗狗的属性的实现
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 4.1、类、对象、实例化的概念
# # #
# # # 1、什么叫类:
# # # 类是一种数据结构,就好比一个模型,该模型用来表述一类事物(事物即数据和动作的结
# # # 合体),用它来生产真实的物体(实例) # # # 2、什么叫对象:
# # # 睁开眼,你看到的一切事物都是一个个对象,你可以把对象理解为一个具体的事物
# # #(事物即数据和动作的结合体)
# # #(铅笔是对象,人是对象,房子是对象,狗是对象,计算机是对象,水杯是对象) # # # 3、类与对象的关系:
# # # 对象是由类产生的,上帝造人,上帝首先有一个造人的模板,这个模板即人的类,然后上帝根据类的定义来生产一个个的人 # # # 4、什么叫实例化:
# # # 由生产对象的过程叫实例化,类实例化的结果就是一个对象,或者叫做一个
# # # 实例(实例 = 对象)
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 5、对象概念深入探讨4,与序号2类似举例
# # # 实现对多个属性的函数对象函数实现
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 5.1、对象概念深入探讨5,与序号2类似举例
# # # 实现对多个属性的函数对象函数实现
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 6、类的实例化初识
# # # 具体见11
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 7、类的属性
# # # 类的数据属性, 类的函数属性(又称为方法)
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 8、类的数据属性
# # # 定义一个狗的类,然后在类中定义一个类的属性,声音是汪汪汪,这样,只要是狗,它们共有的属性就是汪汪汪
# # # 类属性又称为静态变量,或者是静态数据,这些数据是与它们所属的类对象绑定的,不依赖于任何类实例
# # # 如果你是一位Java或C++程序员,这种类型的数据相当于在一个变量声明前加上static关键字
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 8.1、类的函数属性
# # # 类的函数属性(又称为方法)
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 9、类的函数属性查看与调用
# # # 类的函数属性(又称为方法)
# # # 它的调用,类似于前面的2
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 10、特殊的类的函数属性
# # #
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 11、实例化
# # # 对比情况,见上面4
# # # 需要注意的是,类有属性: 数据 与 函数; 而实例只有数据属性,它的函数来源于类
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 12、 类属性查看
# # #
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 13、 类属性修改
# # #
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 14、 类属性 增加(类的数值属性)
# # #
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 15、 类属性 增加(类的函数属性)
# # #
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 15.1、 类属性 增加(类的函数属性)
# # #
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 16、 del, 类属性 删除
# # #
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 17、 类属性的数值属性的添加
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 18、 对实例添加数值属性与对类的关系
# # # 实例中的数值属性添加是添加到自己的地点中,而类的数值属性并没有发生变化
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 19、 类、实例的数值属性与全局变量的关系
# # # 数值属性的寻找过程: 实例-->> 调用数值属性 -->>有就返回,如果没有就继续找 -->>
# # # 类的数值属性 -->>有就返回,没有就会报错
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 19.1、 类、实例的数值属性与全局变量的关系
# # # 数值属性的寻找过程: 实例-->> 调用数值属性 -->>有就返回,如果没有就继续找 -->>
# # # 类的数值属性 -->>有就返回,没有就会报错
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 20、 对类的__init__(self, name)实现输入实例化
# # # __init__(self, name)函数是用来在类中进行实例化的,不可以在里面放置类似于有
# # # shi_li_hua()函数相关的内容,这是因是每个函数有都自己的特点的功能,不该混淆使用
# 下面的实例化是不规范的:
# def __init__(self, name):
# name = input(">>: ")
# self.name = name
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 21、实例数值属性 与 类的数值属性
# # # 实例数值属性进行赋值时,如果没有,就回去类的数值属性中查找,找到后赋值,
# # # 会将该数值属性添加到己的字典中,但是对于类中的是没有更改的,因为实例只
# # # 是调用了类的数值属性
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 21.1、实例数值属性 与 类的数值属性
# # # 实例数值属性进行赋值时,如果没有,就回去类的数值属性中查找,找到后赋值,
# # # 会将该数值属性添加到己的字典中,但是对于类中的是没有更改的,因为实例只
# # # 是调用了类的数值属性
# ------------------------------------------------------------ # ------------------------------------------------------------
# # 22、实例数值属性 与 类的数值属性 赋值与添加的区别
# # # 如果是实例中是没有的数值属性,赋值==》添加到实例字典中
# # # 如果是实例中是没有的数值属性,添加==》添加到类 字典中
# ------------------------------------------------------------
# ------------------------------------------------分割线-------------------------------------------------
# ------------------------------------------------分割线-------------------------------------------------
# ------------------------------------------------分割线-------------------------------------------------
# 01
# 01
# 01 '''
# ------------------------------------------------------------
# # 1、对象概念引入
# # # 事物:狗狗; 特征:吃,叫;
# # # 一下的所有的与狗狗相关的探讨,都是要实现对所有不同狗狗的实现
# # # 下面的演示中,狗的特征与动作没有直接的关系,其他有某事物的特征也一样可以使用用该动作函数
# ------------------------------------------------------------
'''
#
# # 狗的特征
# dog1= {
# 'name':'元英',
# 'gender':"母",
# 'type':'藏獒'
# }
#
# dog2= {
# 'name':'铅笔',
# 'gender':"公",
# 'type':'田园犬'
# }
#
# person1= {
# 'name':'tom',
# 'gender':"男",
# 'type':'人'
# }
# # 狗的动作
# def jiao(dog):
# print("一条叫【%s】的狗,汪汪汪"%dog['name'])
#
# def chi(dog):
# print("一条【%s】正在中吃东东" %dog['type'])
#
#
# jiao(dog1)
# chi(dog1)
# print("分割线".center(60,"-"))
# jiao(dog2)
# chi(dog2)
# print("分割线".center(60,"-"))
# jiao(person1)
# chi(person1)
# #
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # 一条叫【元英】的狗,汪汪汪
# # 一条【藏獒】正在中吃东东
# # ----------------------------分割线-----------------------------
# # 一条叫【铅笔】的狗,汪汪汪
# # 一条【田园犬】正在中吃东东
# # ----------------------------分割线-----------------------------
# # 一条叫【tom】的狗,汪汪汪
# # 一条【人】正在中吃东东
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 2、对象概念深入探讨1
# # # 对狗的种类所具有的性质进行包装,但是具有一定的局限性,如果有多个狗的属性,每一个都要添加
# ------------------------------------------------------------
'''
#
# def dog():
# # 狗的动作
# def jiao(dog):
# print("一条叫【%s】的狗,汪汪汪" %dog['name'])
#
# def chi(dog):
# print("一条【%s】正在中吃东东" %dog['type'])
#
# # 狗的特征
# dog1 = {
# 'name': '元英',
# 'gender': "母",
# 'type': '藏獒',
# 'jiao': jiao,
# 'chi': chi
# }
# return dog1
# d1 = dog()
# # 返回的是一个字典
# print(d1)
# d1['jiao'](d1)
# d1['chi'](d1)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # {'name': '元英', 'gender': '母', 'type': '藏獒', 'jiao': <function dog.<locals>.jiao at 0x0000000002995620>, 'chi': <function dog.<locals>.chi at 0x00000000039EE7B8>}
# # 一条叫【元英】的狗,汪汪汪
# # 一条【藏獒】正在中吃东东
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 3、对象概念深入探讨2
# # # 实现对多个属不同狗狗的属性的实现
# ------------------------------------------------------------
'''
#
# def dog(name,gender,type):
# # 狗的动作
# def jiao(dog):
# print("一条叫【%s】的狗,汪汪汪" %dog['name'])
#
# def chi(dog):
# print("一条【%s】正在中吃东东" %dog['type'])
#
# # 狗的特征
# dog1 = {
# 'name': name,
# 'gender': gender,
# 'type': type,
# 'jiao': jiao,
# 'chi': chi
# }
# return dog1
#
# d1 = dog( '元英',"母",'藏獒')
# # 返回的是一个字典
# print(d1)
# d1['jiao'](d1)
# d1['chi'](d1)
# print("分割线".center(60,"-"))
#
# d2 = dog( '铅笔', "公", '田园犬')
# # 返回的是一个字典
# print(d2)
# d2['jiao'](d2)
# d2['chi'](d2) #
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # {'name': '元英', 'gender': '母', 'type': '藏獒', 'jiao': <function dog.<locals>.jiao at 0x0000000002285620>, 'chi': <function dog.<locals>.chi at 0x00000000039EE7B8>}
# # 一条叫【元英】的狗,汪汪汪
# # 一条【藏獒】正在中吃东东
# # ----------------------------分割线-----------------------------
# # {'name': '铅笔', 'gender': '公', 'type': '田园犬', 'jiao': <function dog.<locals>.jiao at 0x00000000039EE840>, 'chi': <function dog.<locals>.chi at 0x00000000039EE8C8>}
# # 一条叫【铅笔】的狗,汪汪汪
# # 一条【田园犬】正在中吃东东
# #
# # Process finished with exit code 0
# '''
# ------------------------------------------------------------
# # 4、对象概念深入探讨2
# # # 实现对多个属不同狗狗的属性的实现
# ------------------------------------------------------------
'''
#
# def dog(name,gender,type):
# # 狗的动作
# def jiao(dog):
# print("一条叫【%s】的狗,汪汪汪" %dog['name'])
#
# def chi(dog):
# print("一条【%s】正在中吃东东" %dog['type'])
#
# def init(name, gender, type):
# # 狗的特征
# dog1 = {
# 'name': name,
# 'gender': gender,
# 'type': type,
# 'jiao': jiao,
# 'chi': chi
# }
# return dog1
# return init(name, gender, type)
#
# d1 = dog( '元英',"母",'藏獒')
# # 返回的是一个字典
# print(d1)
# d1['jiao'](d1)
# d1['chi'](d1)
# print("分割线".center(60,"-"))
#
# d2 = dog( '铅笔', "公", '田园犬')
# # 返回的是一个字典
# print(d2)
# d2['jiao'](d2)
# d2['chi'](d2) # # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # {'name': '元英', 'gender': '母', 'type': '藏獒', 'jiao': <function dog.<locals>.jiao at 0x0000000002285620>, 'chi': <function dog.<locals>.chi at 0x00000000039EE7B8>}
# # 一条叫【元英】的狗,汪汪汪
# # 一条【藏獒】正在中吃东东
# # ----------------------------分割线-----------------------------
# # {'name': '铅笔', 'gender': '公', 'type': '田园犬', 'jiao': <function dog.<locals>.jiao at 0x00000000039EE840>, 'chi': <function dog.<locals>.chi at 0x00000000039EE8C8>}
# # 一条叫【铅笔】的狗,汪汪汪
# # 一条【田园犬】正在中吃东东
# #
# # Process finished with exit code 0
# # 02 面向对象设计part2
# 02 面向对象设计part2 '''
# ------------------------------------------------------------
# # 4.1、类、对象、实例化的概念
# # #
# # # 1、什么叫类:
# # # 类是一种数据结构,就好比一个模型,该模型用来表述一类事物(事物即数据和动作的结
# # # 合体),用它来生产真实的物体(实例) # # # 2、什么叫对象:
# # # 睁开眼,你看到的一切事物都是一个个对象,你可以把对象理解为一个具体的事物
# # #(事物即数据和动作的结合体)
# # #(铅笔是对象,人是对象,房子是对象,狗是对象,计算机是对象,水杯是对象) # # # 3、类与对象的关系:
# # # 对象是由类产生的,上帝造人,上帝首先有一个造人的模板,这个模板即人的类,然后上帝根据类的定义来生产一个个的人 # # # 4、什么叫实例化:
# # # 由生产对象的过程叫实例化,类实例化的结果就是一个对象,或者叫做一个
# # # 实例(实例 = 对象)
# ------------------------------------------------------------
''' '''
# ------------------------------------------------------------
# # 5、对象概念深入探讨4,与序号2类似举例
# # # 实现对多个属性的函数对象函数实现
# ------------------------------------------------------------'''
#
# def school(name, addr, type):
# def init(name, addr, type):
# dic_sch = {
# "name": name,
# "addr": addr,
# "type": type,
# "examination": examination,
# "recruit": recruit
# }
# return dic_sch
#
# def examination(school):
# print("【%s】is examing now!" %school["name"])
# def recruit(school):
# print("%s【%s】 is recruiting now !" %( school["name"],school["type"]) )
#
# return init(name, addr, type) # 这个是与上面2中的区别
#
# s1 =school("蓝翔", "中国", "私立")
# s2 =school("北大青鸟", "中国", "私立")
#
# s1["recruit"](s1)
# s1["examination"](s1)
# print("分割线".center(60,"-"))
#
# s2["recruit"](s2)
# s2["examination"](s2)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # 蓝翔【私立】 is recruiting now !
# # 【蓝翔】is examing now!
# # ----------------------------分割线-----------------------------
# # 北大青鸟【私立】 is recruiting now !
# # 【北大青鸟】is examing now!
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 5.1、对象概念深入探讨5,与序号2类似举例
# # # 实现对多个属性的函数对象函数实现
# ------------------------------------------------------------'''
#
# def school(name, addr, type):
# def init(name, addr, type):
# dic_sch = {
# "name": name,
# "addr": addr,
# "type": type,
# "examination": examination,
# "recruit": recruit
# }
# return dic_sch
#
# def examination(school):
# print("【%s】is examing now!" %school["name"])
# def recruit(school):
# print("%s【%s】 is recruiting now !" %( school["name"],school["type"]) )
#
# return init(name, addr, type) # 这个是与上面2中的区别
#
# s1 =school("蓝翔", "中国", "私立")
# s2 =school("北大青鸟", "中国", "私立")
#
# s1["recruit"](s1)
# s1["examination"](s1)
# print("分割线".center(60,"-"))
#
# s2["recruit"](s2)
# s2["examination"](s2)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # 蓝翔【私立】 is recruiting now !
# # 【蓝翔】is examing now!
# # ----------------------------分割线-----------------------------
# # 北大青鸟【私立】 is recruiting now !
# # 【北大青鸟】is examing now!
# #
# # Process finished with exit code 0 #
# ------------------------------------------------分割线-------------------------------------------------
# 03 类相关知识
# 03 类相关知识 '''
# ------------------------------------------------------------
# # 6、类的实例化初识
# # # 具体见11
# ------------------------------------------------------------
'''
#
# class Chinese:
# "这是一个关于中国人的类"
# pass
# # 实例化到底干了什么?
# p1 = Chinese() # 实例化
# print(p1)
#
# # 实例化的过程如下
# print(p1.__init__())
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # <__main__.Chinese object at 0x0000000001E787F0>
# # None
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 7、类的属性
# # # 类的数据属性, 类的函数属性(又称为方法)
# ------------------------------------------------------------
''' '''
# ------------------------------------------------------------
# # 8、类的数据属性
# # # 定义一个狗的类,然后在类中定义一个类的属性,声音是汪汪汪,这样,只要是狗,它们共有的属性就是汪汪汪
# # # 类属性又称为静态变量,或者是静态数据,这些数据是与它们所属的类对象绑定的,不依赖于任何类实例
# # # 如果你是一位Java或C++程序员,这种类型的数据相当于在一个变量声明前加上static关键字
# ------------------------------------------------------------
'''
#
# class dog:
# "这是一个关于狗的类"
# language = "汪汪汪汪"
#
# print(dog.language)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # 汪汪汪汪
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 8.1、类的函数属性
# # # 类的函数属性(又称为方法)
# ------------------------------------------------------------
'''
#
# class dog:
# "这是一个关于狗的类"
# language = "汪汪汪汪"
# def jiao():
# print("一条狗,汪汪汪叫" )
#
# def chi(self):
# print("一条狗在这里,吃东西" )
#
# print(dog.language)
# dog.jiao()
#
# # dog.chi() # 这样运行会报错,需要传入一个self的参数
# # 传入的参数是随意时,不用chi(self)中的self时,不会报错
# dog.chi("asfsfad")
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # 汪汪汪汪
# # 一条狗,汪汪汪叫
# # 一条狗在这里,吃东西
# #
# # Process finished with exit code 0
# '''
# ------------------------------------------------------------
# # 9、类的函数属性查看与调用
# # # 类的函数属性(又称为方法)
# # # 它的调用,类似于前面的2
# ------------------------------------------------------------
'''
#
# class dog:
# "这是一个关于狗的类"
# language = "汪汪汪汪"
# def jiao():
# print("一条狗,汪汪汪叫" )
#
# def chi(self):
# print("一条狗在这里,吃东西" )
#
#
# print("分割线===》查看类的属性".center(100,"-"))
# # dir带参数时,返回参数的属性、方法列表
# print(dir(dog))
# # 查看dog类的属性,字典方式打印
# print(dog.__dict__)
#
# print("分割线===》查看类的调用".center(100,"-"))
# print(dog.__dict__["language"])
# print(dog.__dict__["jiao"]())
# print(dog.__dict__["chi"]("saf")) # "saf"在里头并没有使用,这里随意写的
#
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # -------------------------------------------分割线===》查看类的属性--------------------------------------------
# # ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'chi', 'jiao', 'language']
# # {'__module__': '__main__', '__doc__': '这是一个关于狗的类', 'language': '汪汪汪汪', 'jiao': <function dog.jiao at 0x0000000002285620>, 'chi': <function dog.chi at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'dog' objects>, '__weakref__': <attribute '__weakref__' of 'dog' objects>}
# # -------------------------------------------分割线===》查看类的调用--------------------------------------------
# # 汪汪汪汪
# # 一条狗,汪汪汪叫
# # None
# # 一条狗在这里,吃东西
# # None
# #
# # Process finished with exit code 0 # 04
# 04
'''
# ------------------------------------------------------------
# # 10、特殊的类的函数属性
# # #
# ------------------------------------------------------------
'''
#
# class dog:
# "这是一个关于狗的类"
# language = "汪汪汪汪"
# def jiao():
# print("一条狗,汪汪汪叫" )
#
# def chi(self):
# print("一条狗在这里,吃东西" )
#
# print("__name__: ", dog.__name__) # 类的名字(字符串)
# print("__doc__ ", dog.__doc__) # 类的文档字符串
# print("__base__ ", dog.__base__) # 类的第一个父类
# print("__bases__ ", dog.__bases__) # 类的所有父类构成的元组
# print("__dict__ ", dog.__dict__) # 类的属性和属性值
# print("__module__ ", dog.__module__) # 类定义所在的模块
# print("__class__ ", dog.__class__ ) # 实例dog对应的类(仅新式类中)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # __name__: dog
# # __doc__ 这是一个关于狗的类
# # __bases__ <class 'object'>
# # __bases__ (<class 'object'>,)
# # __dict__ {'__module__': '__main__', '__doc__': '这是一个关于狗的类', 'language': '汪汪汪汪', 'jiao': <function dog.jiao at 0x0000000002965620>, 'chi': <function dog.chi at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'dog' objects>, '__weakref__': <attribute '__weakref__' of 'dog' objects>}
# # __module__ __main__
# # __class__ <class 'type'>
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 11、实例化
# # # 对比情况,见上面4
# # # 需要注意的是,类有属性: 数据 与 函数; 而实例只有数据属性,它的函数来源于类
类中的初始化程序 __init__,如形式1,它的实现过程式类似于形式2的
形式1:
def __init__(self, name, gender, type):
print("开始运行初始化程序")
self.mingzi = name
self.xingbie = gender
self.leixing = type
print("运行完毕!!") 形式2:
def __init__( name, gender, type):
# 狗的特征
dog1 = {
'mingzi': name,
'xingbie': gender,
'leixing': type # 'jiao': jiao,
# 'chi': chi
}
return dog1
# ------------------------------------------------------------
'''
#
# class dog:
# "这是一个关于狗的类"
# language = "汪汪汪汪"
#
# def __init__(self, name, gender, type, age):
# print("开始运行初始化程序")
# print("self是: ",self)
# self.mingzi = name
# self.xingbie = gender
# self.leixing = type
# self.nianling = age
# print("运行完毕!!")
#
# def jiao():
# print("一条狗,汪汪汪叫" )
# print("名字是%s")
#
# def chi(self):
# print("self是: ",self)
# print("一条狗在这里,吃东西" )
# print("这个吃货,年龄%s" %self.nianling)
#
#
# d1 = dog( '元英', "母", '藏獒', 3) # 等价过程 d1 = dog.__init__(d1, '元英',"母",'藏獒', 3)
#
# # 返回的是一个字典
# print("d1 ",d1)
# print("__dict__ ", d1.__dict__)
#
# print("__dict__['mingzi'] ", d1.__dict__['mingzi'])
# print("mingzi ", d1.mingzi )
#
# # d1.jiao()的运行会导致 TypeError: jiao() takes 0 positional arguments but 1 was given
# # 原因是在国初始化中,类会默认给它传入一个参数self,但是矸在定义jiao()时,它是没有参数的
# # d1.jiao()
#
# # 调用实例的函数
# # 过程: 自己的字典查找 ---》没有 --》类的字典 --》找到chi() --》调用
# d1.chi()
#
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # 开始运行初始化程序
# # self是: <__main__.dog object at 0x00000000029912B0>
# # 运行完毕!!
# # d1 <__main__.dog object at 0x00000000029912B0>
# # __dict__ {'mingzi': '元英', 'xingbie': '母', 'leixing': '藏獒', 'nianling': 3}
# # __dict__['mingzi'] 元英
# # mingzi 元英
# # self是: <__main__.dog object at 0x00000000029912B0>
# # 一条狗在这里,吃东西
# # 这个吃货,年龄3
# #
# # Process finished with exit code 0 # 05 类属性增删改查
# 05 类属性增删改查
'''
# ------------------------------------------------------------
# # 12、 类属性查看
# # #
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "China"
# def __init__(self, name):
# self.name = name
#
# def play_ball(self,ball):
# print("%s 正在打 %s" %(self.name, ball))
#
#
# # 查看
# print("Chinese.country: ", Chinese.country)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # Chinese.country: China
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 13、 类属性修改
# # #
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "China"
# def __init__(self, name):
# self.name = name
#
# def play_ball(self,ball):
# print("%s 正在打 %s" %(self.name, ball))
#
#
# # 修改
# print("修改".center(60,"-"))
# Chinese.country = "Japan"
# print("Chinese.country: ", Chinese.country)
# p1 = Chinese("alex")
# print(" p1.__dict__: ", p1.__dict__)
# print("p1.country: ", p1.country)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # -----------------------------修改-----------------------------
# # Chinese.country: Japan
# # p1.__dict__: {'name': 'alex'}
# # p1.country: Japan
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 14、 类属性 增加(类的数值属性)
# # #
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "China"
# def __init__(self, name):
# self.name = name
#
# def play_ball(self,ball):
# print("%s 正在打 %s" %(self.name, ball))
#
#
#
# # 增加(类的数值属性)
# print("增加".center(60,"-"))
# p1 = Chinese("alex")
# Chinese.dang = "我党"
# print("Chinese.dang: ", Chinese.dang)
# print("p1.dang: ", p1.dang)
# print(" Chinese.__dict__: ", Chinese.__dict__)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # -----------------------------增加-----------------------------
# # Chinese.dang: 我党
# # p1.dang: 我党
# # Chinese.__dict__: {'__module__': '__main__', 'country': 'China', '__init__': <function Chinese.__init__ at 0x0000000002965620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None, 'dang': '我党'}
# #
# # Process finished with exit code 0
# #
# # '''
# ------------------------------------------------------------
# # 15、 类属性 增加(类的函数属性)
# # #
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "China"
# def __init__(self, name):
# self.name = name
#
# def play_ball(self,ball):
# print("%s 正在玩 %s" %(self.name, ball))
#
# # p1实例化
# p1 = Chinese("alex")
# # 增加(类的函数属性) 1
# print("增加".center(60,"-"))
# def eat_food(self, food):
# print("%s 正在吃 %s" %( self.name, food) )
#
#
# Chinese.eat = eat_food
# print(Chinese.__dict__)
# Chinese.eat(p1, "面条") # 这种用法基本不用
# print( Chinese.country)
#
# Chinese.play_ball(p1,"足球") # 这种用法基本不用
# p1.play_ball("足球")
# p1.eat("面条") #
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # {'__module__': '__main__', 'country': 'China', '__init__': <function Chinese.__init__ at 0x0000000002975620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None, 'eat': <function eat_food at 0x0000000002071EA0>}
# # China
# # alex 正在打 足球
# # alex 正在吃 面条
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 15.1、 类属性 增加(类的函数属性)
# # #
# ------------------------------------------------------------
'''
#
#
# class Chinese:
# country = "China"
#
# def __init__(self, name):
# self.name = name
#
# def play_ball(self,ball):
# print("%s 正在玩 %s" %(self.name, ball))
#
#
# # p1实例化
# p1 = Chinese("alex")
#
# # 增加(类的函数属性) 2, 下面这种用法基本不用
# # 因为把函数属性添加到了实例化当中
# print("增加".center(60,"-"))
# def test(self):
# print("这是一个来自实例的函数属性",self)
# # 添加到p1当中
# p1.test = test
#
# print(p1.__dict__)
# p1.test("sdaf")
#
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # -----------------------------增加-----------------------------
# # {'name': 'alex', 'test': <function test at 0x0000000001D21EA0>}
# # 这是一个来自实例的函数属性 sdaf
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 16、 del, 类属性 删除
# # #
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "China"
# def __init__(self, name):
# self.name = name
#
# def play_ball(self,ball):
# print("%s 正在玩 %s" %(self.name, ball))
#
#
# Chinese.dang = "我党"
# print(" Chinese.__dict__, before : ", Chinese.__dict__)
# # 删除
# print("删除".center(60,"-"))
# del Chinese.country
# del Chinese.dang
# del Chinese.play_ball
#
# print(" Chinese.__dict__, after : ", Chinese.__dict__)
# #
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # Chinese.__dict__, before : {'__module__': '__main__', 'country': 'China', '__init__': <function Chinese.__init__ at 0x0000000002985620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None, 'dang': '我党'}
# # -----------------------------删除-----------------------------
# # Chinese.__dict__, after : {'__module__': '__main__', '__init__': <function Chinese.__init__ at 0x0000000002985620>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# #
# # Process finished with exit code 0 # 07
# 07
'''
# ------------------------------------------------------------
# # 17、 类属性的数值属性的添加
# ------------------------------------------------------------
'''
#
# class MyData:
# pass
# x = 10
# y = 20
# MyData.x = x
# MyData.y = y
#
# x, y = 66, 99
# print(x,y)
# print(MyData.x)
# print(MyData.y)
# print(MyData.__dict__)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # 66 99
# # 10
# # 20
# # {'__module__': '__main__', '__dict__': <attribute '__dict__' of 'MyData' objects>, '__weakref__': <attribute '__weakref__' of 'MyData' objects>, '__doc__': None, 'x': 10, 'y': 20}
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 18、 对实例添加数值属性与对类的关系
# # # 实例中的数值属性添加是添加到自己的地点中,而类的数值属性并没有发生变化
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "China"
# def __init__(self, name):
# self.name = name
# def play_ball(self, ball):
# print("%s 正在打 %s"%(self.name, ball))
# p1 = Chinese("alex")
# print(p1.country)
# # p1.country添加到的是p1自己实例的字典中
# p1.country = "日本"
# print("类的===>>>", Chinese.country)
# print("实例的==>>", p1.country)
# print("Chinese.__dict__: ", Chinese.__dict__)
# print("p1.__dict__: ",p1.__dict__)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # China
# # 类的===>>> China
# # 实例的==>> 日本
# # Chinese.__dict__: {'__module__': '__main__', 'country': 'China', '__init__': <function Chinese.__init__ at 0x0000000002995620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# # p1.__dict__: {'name': 'alex', 'country': '日本'}
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 19、 类、实例的数值属性与全局变量的关系
# # # 数值属性的寻找过程: 实例-->> 调用数值属性 -->>有就返回,如果没有就继续找 -->>
# # # 类的数值属性 -->>有就返回,没有就会报错
# ------------------------------------------------------------
'''
#
# country = "中国"
# class Chinese:
# def __init__(self, name):
# self.name = name
# def play_ball(self, ball):
# print(" %s 正在打 %s" %( self.name, ball))
#
#
# p1 = Chinese("alex")
# print(p1.country) # 报错,p1并没有这个数值属性
# print(Chinese.country) # 报错,Chinese并没有这个数值属性
#
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # Traceback (most recent call last):
# # File "D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py", line 980, in <module>
# # print(p1.country)
# # AttributeError: 'Chinese' object has no attribute 'country'
# #
# # Process finished with exit code 1
# '''
# ------------------------------------------------------------
# # 19.1、 类、实例的数值属性与全局变量的关系
# # # 数值属性的寻找过程: 实例-->> 调用数值属性 -->>有就返回,如果没有就继续找 -->>
# # # 类的数值属性 -->>有就返回,没有就会报错
# ------------------------------------------------------------
'''
#
# country = "中国"
# class Chinese:
# capital = "北京"
# # 是一个普通的变量,可向外查找
# print("这个是类中的: " , country)
# # capital,类中有定义
# print("这个是类中的: ", capital)
# def __init__(self, name):
# self.name = name
# # country前面并有点,因此是一个普通的变量,可向外查找
# print("这个是实例中的:", country)
# # 实例中的数值,自己的字典找不到,就去类的字典中找
# print("这个是实例中的: ", self.capital)
# # print("这个是实例中的: ", capital) # 《报错》
# def play_ball(self, ball):
# print(" %s 正在打 %s" %( self.name, ball))
#
#
# p1 = Chinese("alex")
# print("p1.__dict__: ", p1.__dict__)
# print("Chinese.__dict__: ", Chinese.__dict__)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # 这个是类中的: 中国
# # 这个是类中的: 北京
# # 这个是实例中的: 中国
# # 这个是实例中的: 北京
# # p1.__dict__: {'name': 'alex'}
# # Chinese.__dict__: {'__module__': '__main__', 'capital': '北京', '__init__': <function Chinese.__init__ at 0x00000000029A5620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 20、 对类的__init__(self, name)实现输入实例化
# # # __init__(self, name)函数是用来在类中进行实例化的,不可以在里面放置类似于有
# # # shi_li_hua()函数相关的内容,这是因是每个函数有都自己的特点的功能,不该混淆使用
# 下面的实例化是不规范的:
# def __init__(self, name):
# name = input(">>: ")
# self.name = name
# ------------------------------------------------------------
'''
#
# country = "中国"
# class Chinese:
# def __init__(self, name):
# self.name = name
# def play_ball(self, ball):
# print(" %s 正在打 %s" %( self.name, ball))
#
# def shi_li_hua():
# name = input(">>: ")
# p1 = Chinese(name)
# print(p1.name)
#
#
# shi_li_hua()
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # >>: zhang
# # zhang
# #
# # Process finished with exit code 0 #
# 08 对象与实例属性补充
# 08 对象与实例属性补充
'''
# ------------------------------------------------------------
# # 21、实例数值属性 与 类的数值属性
# # # 实例数值属性进行赋值时,如果没有,就回去类的数值属性中查找,找到后赋值,
# # # 会将该数值属性添加到己的字典中,但是对于类中的是没有更改的,因为实例只
# # # 是调用了类的数值属性
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "中国"
# def __init__(self, name):
# self.name = name
# def play_ball(self, ball):
# print(" %s 正在打 %s" %( self.name, ball))
#
#
#
# p1 = Chinese("alex")
#
# print("更改前".center(100,"-") )
# print("p1.__dict__: ", p1.__dict__)
# print("Chinese.__dict__: ", Chinese.__dict__)
#
# p1.country = "Japan"
# print(Chinese.country)
#
# print("更改后".center(100,"-"))
# print("p1.__dict__: ", p1.__dict__)
# print("Chinese.__dict__: ", Chinese.__dict__)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # ------------------------------------------------更改前-------------------------------------------------
# # p1.__dict__: {'name': 'alex'}
# # Chinese.__dict__: {'__module__': '__main__', 'country': '中国', '__init__': <function Chinese.__init__ at 0x00000000029A5620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# # 中国
# # ------------------------------------------------更改后-------------------------------------------------
# # p1.__dict__: {'name': 'alex', 'country': 'Japan'}
# # Chinese.__dict__: {'__module__': '__main__', 'country': '中国', '__init__': <function Chinese.__init__ at 0x00000000029A5620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 21.1、实例数值属性 与 类的数值属性
# # # 实例数值属性进行赋值时,如果没有,就回去类的数值属性中查找,找到后赋值,
# # # 会将该数值属性添加到己的字典中,但是对于类中的是没有更改的,因为实例只
# # # 是调用了类的数值属性
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "中国"
# l = ['a','b',123]
# def __init__(self, name):
# self.name = name
# def play_ball(self, ball):
# print(" %s 正在打 %s" %( self.name, ball))
#
#
#
# p1 = Chinese("alex")
#
# print("更改前".center(100,"-") )
# print("p1.__dict__: ", p1.__dict__)
# print("Chinese.__dict__: ", Chinese.__dict__)
#
# # 修改操作
# p1.l = [11, 22, 33, 44]
#
#
# print("更改后".center(100,"-"))
# print("p1.__dict__: ", p1.__dict__)
# print("Chinese.__dict__: ", Chinese.__dict__)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # ------------------------------------------------更改前-------------------------------------------------
# # p1.__dict__: {'name': 'alex'}
# # Chinese.__dict__: {'__module__': '__main__', 'country': '中国', 'l': ['a', 'b', 123], '__init__': <function Chinese.__init__ at 0x00000000022C5620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# # ------------------------------------------------更改后-------------------------------------------------
# # p1.__dict__: {'name': 'alex', 'l': [11, 22, 33, 44]}
# # Chinese.__dict__: {'__module__': '__main__', 'country': '中国', 'l': ['a', 'b', 123], '__init__': <function Chinese.__init__ at 0x00000000022C5620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# #
# # Process finished with exit code 0 '''
# ------------------------------------------------------------
# # 22、实例数值属性 与 类的数值属性 赋值与添加的区别
# # # 如果是实例中是没有的数值属性,赋值==》添加到实例字典中
# # # 如果是实例中是没有的数值属性,添加==》添加到类 字典中
# ------------------------------------------------------------
'''
#
# class Chinese:
# country = "中国"
# l = ['a','b',123]
# def __init__(self, name):
# self.name = name
# def play_ball(self, ball):
# print(" %s 正在打 %s" %( self.name, ball))
#
#
# p1 = Chinese("alex")
# p2 = Chinese("zhang")
# print("更改前".center(100,"-") )
# print("p1.__dict__: ", p1.__dict__)
# print("p2.__dict__: ", p2.__dict__)
#
# print("Chinese.__dict__: ", Chinese.__dict__)
#
# # 修改操作
# p1.l = [11, 22, 33, 44]
# p1.l.append("====>>_____<<====")
#
# p2.l.append(">>>>>>>>>>>……<<<<<<<<<") #
#
# print("更改后".center(100,"-"))
# print("p1.__dict__: ", p1.__dict__)
# print("p2.__dict__: ", p2.__dict__)
# print("Chinese.__dict__: ", Chinese.__dict__)
#
# # D:\Anaconda3\python.exe D:/C_cache/py/day24_MianXiangDuiXiangYuShiLiShuXing/day24_MianXiangDuiXiangYuShiLiShuXing.py
# # ------------------------------------------------更改前-------------------------------------------------
# # p1.__dict__: {'name': 'alex'}
# # p2.__dict__: {'name': 'zhang'}
# # Chinese.__dict__: {'__module__': '__main__', 'country': '中国', 'l': ['a', 'b', 123], '__init__': <function Chinese.__init__ at 0x0000000002975620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# # ------------------------------------------------更改后-------------------------------------------------
# # p1.__dict__: {'name': 'alex', 'l': [11, 22, 33, 44, '====>>_____<<====']}
# # p2.__dict__: {'name': 'zhang'}
# # Chinese.__dict__: {'__module__': '__main__', 'country': '中国', 'l': ['a', 'b', 123, '>>>>>>>>>>>……<<<<<<<<<'], '__init__': <function Chinese.__init__ at 0x0000000002975620>, 'play_ball': <function Chinese.play_ball at 0x00000000039EE7B8>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
# #
# # Process finished with exit code 0

  



 

day24 面向对象设计part1的更多相关文章

  1. python的面向对象-面向对象设计

    1.面向对象设计 def school(name,addr,type):#定义一个大函数的作用就是不能让狗调用学校的方法 #学校动作 def kaoshi(school): print("[ ...

  2. day24:面向对象设计与面向对象编程、类和对象

    一.三大编程范式: 面向过程: 面向函数: 面向对象: 二.程序的进化论: 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定 ...

  3. Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...

  4. UML类图与面向对象设计原则

    1. 引言     从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模 ...

  5. 面向对象设计之SRP(单一职责)原则

    SRP设计原则面向对象类设计的第一个原则,最优先考虑的因素 一个类应该有且仅有一个职责.所谓一个类的职责是指引起该类变化的原因,如果一个类具有一个以上的职责,那么就会有多个不同的原因 引起该类变化,其 ...

  6. 【转】面向对象设计的SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. SRP The Single Responsibility ...

  7. 6. javacript高级程序设计-面向对象设计

    1. 面向对象设计 1.1 理解对象 1.1.1 属性类型 (1). 数据属性:相当于对象的字段,包含一个数据值的位置,在这个位置可以读取和写入值.数据属性中有4个描述其行为的特性: l [[Conf ...

  8. 【OOAD】面向对象设计原则概述

    软件的可维护性和可复用性 知名软件大师Robert C.Martin认为一个可维护性(Maintainability) 较低的软件设计,通常由于如下4个原因造成: 过于僵硬(Rigidity)  ...

  9. 面向对象设计的SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. SRP The Single Responsibility ...

随机推荐

  1. Batch - %~dp0 vs %cd%

    总结 %~dp0 只表示将要“运行的”bat命令的folder,不包含bat自己的名称. %cd%表示,“运行处”的folder . 示例脚本内容 cd-dp0.bat存放在f盘 @echo off ...

  2. flume配置参数的意义

    1.监控端口数据: flume启动: [bingo@hadoop102 flume]$ bin/flume-ng agent --conf conf/ --name a1 --conf-file jo ...

  3. <Java编程思想>读书笔记(1)-对象导论、一切都是对象

    1.面向对象编程:OOP (Object-oriented Programming) 2.Alan Kay 总结的面向对象语言5个基本特性: 1) 万物皆为对象 2) 程序是对象的集合,他们通过发送消 ...

  4. 2019/11/12 CSP模拟赛&&考前小总结

    写在前面的总结 离联赛只有几天了,也马上就要回归文化课了. 有点舍不得,感觉自己的水平刚刚有点起色,却又要被抓回文化课教室了,真想在机房再赖几天啊. 像19/11/11那场的简单题,自己还是能敲出一些 ...

  5. 2019/11/8 CSP模拟

    T1 药品实验 内网#4803 由概率定义,有\[a + b + c = 0\] 变形得到\[1 - b = a + c\] 根据题意有\[p_i = a p _{i - 1} + b p_i + c ...

  6. Gym101981D - 2018ACM-ICPC南京现场赛D题 Country Meow

    2018ACM-ICPC南京现场赛D题-Country Meow Problem D. Country Meow Input file: standard input Output file: sta ...

  7. POJ3241 最小曼哈顿距离生成树 - 真有趣哇

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  给你n个坐标, ...

  8. Git 远程仓库分支管理

    目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...

  9. Openstack Paste.ini 文件详解

    目录 目录 pasteini 配置文件详解 composite pipeline filter app DEFAULT server Request 被 pasteini 处理的流程 如何加载 pas ...

  10. ActiveMQ 反序列化漏洞(CVE-2015-5254)

    java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 192. ...