一、组合的补充:

  1、类或对象可以做字典的key

  2、对象中到底有什么?

 # class Foo(object):
#
# def __init__(self,age):
# self.age = age
#
# def display(self):
# print(self.age)
#
# data_list = [Foo(8),Foo(9)]
# for item in data_list:
# print(item.age,item.display())

对象中到底有什么

 # by luffycity.com

 # ### 1. 类或对象是否能做字典的key
"""
class Foo:
pass user_info = {
Foo:1,
Foo():5
} print(user_info)
"""
# ### 2. 对象中到底有什么? # class Foo(object):
#
# def __init__(self,age):
# self.age = age
#
# def display(self):
# print(self.age)
#
# data_list = [Foo(8),Foo(9)]
# for item in data_list:
# print(item.age,item.display()) # ### 3. # class StarkConfig(object):
#
# def __init__(self,num):
# self.num = num
#
# def changelist(self,request):
# print(self.num,request)
#
# class RoleConfig(StarkConfig):
#
# def changelist(self,request):
# print('666')
#
# # 创建了一个列表,列表中有三个对象(实例)
# # [ StarkConfig对象(num=1), StarkConfig对象(num=2), RoleConfig对象(num=3) ]
# config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
# for item in config_obj_list:
# print(item.num) # 1 2 3 # ### 4.
# class StarkConfig(object):
#
# def __init__(self,num):
# self.num = num
#
# def changelist(self,request):
# print(self.num,request)
#
# class RoleConfig(StarkConfig):
# pass
#
# # 创建了一个列表,列表中有三个对象(实例)
# # [ StarkConfig对象(num=1), StarkConfig对象(num=2), RoleConfig对象(num=3) ]
# config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
# for item in config_obj_list:
# item.changelist(168)
# # #### 5
# class StarkConfig(object):
#
# def __init__(self,num):
# self.num = num
#
# def changelist(self,request):
# print(self.num,request)
#
# class RoleConfig(StarkConfig):
#
# def changelist(self,request):
# print(666,self.num)
#
# # 创建了一个列表,列表中有三个对象(实例)
# # [ StarkConfig对象(num=1), StarkConfig对象(num=2), RoleConfig对象(num=3) ]
# config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
# for item in config_obj_list:
# item.changelist(168) # #### 6 # class StarkConfig(object):
#
# def __init__(self,num):
# self.num = num
#
# def changelist(self,request):
# print(self.num,request)
#
# def run(self):
# self.changelist(999)
#
# class RoleConfig(StarkConfig):
#
# def changelist(self,request):
# print(666,self.num)
#
# config_obj_list = [StarkConfig(1),StarkConfig(2),RoleConfig(3)]
# config_obj_list[1].run()
# config_obj_list[2].run() # 666 3 # #### 7 # class StarkConfig(object):
#
# def __init__(self,num):
# self.num = num
#
# def changelist(self,request):
# print(self.num,request)
#
# def run(self):
# self.changelist(999)
#
# class RoleConfig(StarkConfig):
#
# def changelist(self,request):
# print(666,self.num)
#
#
# class AdminSite(object):
# def __init__(self):
# self._registry = {}
#
# def register(self,k,v):
# self._registry[k] = v
#
# site = AdminSite()
# print(len(site._registry)) # 0
# site.register('range',666)
# site.register('shilei',438)
# print(len(site._registry)) # 2
#
# site.register('lyd',StarkConfig(19))
# site.register('yjl',StarkConfig(20))
# site.register('fgz',RoleConfig(33))
#
# print(len(site._registry)) # 5 # #### 8
# class StarkConfig(object):
#
# def __init__(self,num):
# self.num = num
#
# def changelist(self,request):
# print(self.num,request)
#
# def run(self):
# self.changelist(999)
#
# class RoleConfig(StarkConfig):
#
# def changelist(self,request):
# print(666,self.num)
#
# class AdminSite(object):
# def __init__(self):
# self._registry = {}
#
# def register(self,k,v):
# self._registry[k] = v
#
# site = AdminSite()
# site.register('lyd',StarkConfig(19))
# site.register('yjl',StarkConfig(20))
# site.register('fgz',RoleConfig(33))
# print(len(site._registry)) # 3
#
# for k,row in site._registry.items():
# row.changelist(5) ### 9
# class StarkConfig(object):
#
# def __init__(self,num):
# self.num = num
#
# def changelist(self,request):
# print(self.num,request)
#
# def run(self):
# self.changelist(999)
#
# class RoleConfig(StarkConfig):
#
# def changelist(self,request):
# print(666,self.num)
#
# class AdminSite(object):
# def __init__(self):
# self._registry = {}
#
# def register(self,k,v):
# self._registry[k] = v
#
# site = AdminSite()
# site.register('lyd',StarkConfig(19))
# site.register('yjl',StarkConfig(20))
# site.register('fgz',RoleConfig(33))
# print(len(site._registry)) # 3
#
# for k,row in site._registry.items():
# row.run() ## 10
#
# class UserInfo(object):
# pass
#
# class Department(object):
# pass
#
# class StarkConfig(object):
#
# def __init__(self,num):
# self.num = num
#
# def changelist(self,request):
# print(self.num,request)
#
# def run(self):
# self.changelist(999)
#
# class RoleConfig(StarkConfig):
#
# def changelist(self,request):
# print(666,self.num)
#
# class AdminSite(object):
# def __init__(self):
# self._registry = {}
#
# def register(self,k,v):
# self._registry[k] = v(k)
#
# site = AdminSite()
# site.register(UserInfo,StarkConfig)
# site.register(Department,StarkConfig)
# print(len(site._registry)) # 3
# for k,row in site._registry.items():
# row.run() # 总结:
"""
1. 对象中封装了什么?
2. self到底是谁?
"""

组合补充课上练习

二、主动调用其它类的成员

  方式一、

			class Base(object):
def f1(self):
print('5个功能')
class Foo(object):
def f1(self):
print('3个功能')
Base.f1(self) 执行完Foo中的方法,主动另外Base类的成员
obj = Foo()
obj.f1()
总结:
Base.实例方法(自己传self)
与继承无关

  方式二:

      按照类的继承顺序,找下一个,与继承有关

class Base(object):
def f1(self):
print("5个功能")
class Foo(Base):
def f1(self):
print("3个功能")
super().f1() #按照继承顺序往上找
obj = Foo()
obj.f1()
 # by luffycity.com
"""""" """
class Base(object):
def f1(self):
print('5个功能') # obj = Base()
# Base.f1(obj) obj = Base()
obj.f1() """ # ########### 方式一
# class Base(object):
#
# def f1(self):
# print('5个功能')
#
# class Foo(object):
#
# def f1(self):
# print('3个功能')
# Base.f1(self)
#
# obj = Foo()
# obj.f1() # ########### 方式二:按照类的继承顺序,找下一个.
"""
class Base(object):
def f1(self):
print('5个功能') class Foo(Base):
def f1(self):
super().f1()
print('3个功能') obj = Foo()
obj.f1()
""" # ########### 方式二:按照类的继承顺序,找下一个.
class Foo(object):
def f1(self):
super().f1()
print('3个功能') class Bar(object):
def f1(self):
print('6个功能') class Info(Foo,Bar):
pass # obj = Foo()
# obj.f1() obj = Info()
obj.f1()

三、特殊成员

class Foo(object):

    def __init__(self,a1,a2):
self.a1 = a1
self.a2 = a2 def __call__(self, *args, **kwargs):
print(11111,args,kwargs)
return 123 def __getitem__(self, item):
print(item)
return 8 def __setitem__(self, key, value):
print(key,value,111111111) def __delitem__(self, key):
print(key) def __add__(self, other):
return self.a1 + other.a2 def __enter__(self):
print('1111')
return 999 def __exit__(self, exc_type, exc_val, exc_tb):
print('22222')
1. 类名() 自动执行 __init__
# obj = Foo(1,2) 2. 对象() 自动执行 __call__
# ret = obj(6,4,2,k1=456) 3. 对象['xx'] 自动执行 __getitem__
# ret = obj['yu']
# print(ret) 4. 对象['xx'] = 11 自动执行 __setitem__
# obj['k1'] = 123 5. del 对象[xx] 自动执行 __delitem__
# del obj['uuu'] 6. 对象+对象 自动执行 __add__
# obj1 = Foo(1,2)
# obj2 = Foo(88,99)
# ret = obj2 + obj1
# print(ret) 7. with 对象 自动执行 __enter__ / __exit__
# obj = Foo(1,2)
# with obj as f:
# print(f)
# print('内部代码') 8. 真正的构造方法
# class Foo(object):
# def __init__(self, a1, a2): # 初始化方法
# """
# 为空对象进行数据初始化
# :param a1:
# :param a2:
# """
# self.a1 = a1
# self.a2 = a2
#
def __new__(cls, *args, **kwargs): # 构造方法
# """
# 创建一个空对象
# :param args:
# :param kwargs:
# :return:
# """
# return object.__new__(cls) # Python内部创建一个当前类的对象(初创时内部是空的.).
#
# obj1 = Foo(1,2)
# print(obj1)
#
# obj2 = Foo(11,12)
# print(obj2)

  

day 24 组合的补充的更多相关文章

  1. [ACM_数学] Fibonacci Nim(另类取石子,2-4组合游戏)

    游戏规则: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍). ...

  2. 【趣味分享】C#实现回味童年的24点算法游戏

    一.24点游戏玩法规则效果展示 1.初始化界面 2.开始游戏界面 3.游戏超时界面 4.查看答案界面 5.答对界面 6.答错界面 7.计算表达式的验证界面 8.一副牌算完开始新一副牌界面 到这里24点 ...

  3. python编写排列组合,密码生产功能

    python编写排列组合 python在编写排列组合是会用到  itertools 模块 排列 import itertools mylist = list(itertools.permutation ...

  4. 以太坊挖矿源码:ethash算法

    本文具体分析以太坊的共识算法之一:实现了POW的以太坊共识引擎ethash. 关键字:ethash,共识算法,pow,Dagger Hashimoto,ASIC,struct{},nonce,FNV ...

  5. JavaScript继承的几种实现

    0 什么是继承 继承就是获得存在对象已有的属性和方法的一种方式. [2019.4.26 更新]今日又重新学习了一下JS的继承,在这里整理一下以前的笔记并补充一些新的感悟. 1 JS中继承的几种实现方法 ...

  6. [Beautifulzzzz的博客目录] 快速索引点这儿O(∩_∩)O~~,红色标记的是不错的(⊙o⊙)哦~

    3D相关开发 [direct-X] 1.direct-X最小框架 [OpenGL] 1.环境搭建及最小系统 [OpenGL] 2.企业版VC6.0自带的Win32-OpenGL工程浅析 51单片机 [ ...

  7. synchronized关键字,Lock接口以及可重入锁ReentrantLock

    多线程环境下,必须考虑线程同步的问题,这是因为多个线程同时访问变量或者资源时会有线程争用,比如A线程读取了一个变量,B线程也读取了这个变量,然后他们同时对这个变量做了修改,写回到内存中,由于是同时做修 ...

  8. 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码

    一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...

  9. 韩顺平_JAVA_视频教程_下载(打开迅雷,直接复制链接地址即可下载)

    ed2k://|file|韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇.avi|37021064|f4fb2fb3db938a642146ccc8f0935fed|h=ao2k3ep7p ...

随机推荐

  1. OptimalSolution(5)--数组和矩阵问题(1)简单

    一.转圈打印矩阵 题目:给定一个整型矩阵matrix,按照转圈的方式打印它. 要求:额外空间复杂度为O(1) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为: ...

  2. AS报错:lambda expressions are not supported at this language level

    AS报错:lambda expressions are not supported at this language level 解决方法 打开打开 File --> Project Stuct ...

  3. $.ajax.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel= ...

  4. fenby C语言 P10

    if判断语句; if(a<0)→if(条件) if(){C语言语句} #include <stdio.h> int main() { int a=10; if(a>0) { p ...

  5. SSH隧道的使用

    合作部门提供的 redis 集群,kafka 集群,限制条件:无 vpn,仅能通过特定跳板机(无 root 权限)连接调试开发. 想要实现:本地开发连接其 redis 集群,kafka 集群进行开发调 ...

  6. [2018-01-12] python 当天学习笔记

    Python模块 Python欧快(Moudule),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句. 模块让你能够有逻辑地组织你的Python代码段. 把相关的代 ...

  7. CSPS模拟 85

    WWB大佬的bitset映射真是太强了! %%% T1 观察样例,猜规律. T2 对题目的翻译工作用了很长时间 翻译错了好几次.. 观察到奇环没法染色,选的边必须把奇环弄断 如果在偶环上,偶环就变得没 ...

  8. 推荐一款Diffy:Twitter的开源自动化测试工具

    1. Diffy是什么 Diffy是一个开源的自动化测试工具,是一种Diff测试技术.它能够自动检测基于Apache Thrift或者基于HTTP的服务.通过同时运行新/老代码,对比运行结果,发现潜在 ...

  9. python机器学习——感知器

    最近在看机器学习相关的书籍,顺便把每天阅读的部分写出来和大家分享,共同学习探讨一起进步!作为机器学习的第一篇博客,我准备从感知器开始,之后会慢慢更新其他内容. 在实现感知器算法前,我们需要先了解一下神 ...

  10. 004.Kubernetes二进制部署创建证书

    一 创建CA证书和密钥 1.1 安装cfssl工具集 [root@k8smaster01 ~]# mkdir -p /opt/k8s/cert [root@k8smaster01 ~]# curl - ...