一、组合的补充:

  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. 设计模式C++描述----13.代理(Proxy)模式

    一. 举例说明 我们有时打开一个网站时会发现有这样的现象,网站上的文字都显示出来了,但是上面的图片还没显示,要等一会才能显示. 这些未打开的图片的位置上,还是会有图片框和一些等待的信息的,这就是代理模 ...

  2. MySQL在渗透测试中的应用

    原文地址:https://xz.aliyun.com/t/400 前言作为一个安全爱好者你不可能不知道MySQL数据库,在渗透过程中,我们也很经常遇到MySQL数据库的环境,本文就带大家了解MySQL ...

  3. 题解 【洛谷】AT654

    题解 AT654 [役人[错题已隐藏]] 此题题面没搬过来, 会日语的dalao可以自行去ATCoder查看. 给出此题的JavaAC代码: public class Main { public st ...

  4. CSPS模拟 68

    令人kuku的一场考试, T1 令人kuku的贪心,反工了好几次,耗费了1h之久. T2 令人kuku的数据结构,到死也没调出来,还是细节问题,要积累. T3 令人kuku的二分答案. 先二分第一个答 ...

  5. CSPS模拟 54

    T1    $2^{联通块个数}-2$ T2 $bitset$随便水 T3 分类讨论,讨论,讨论

  6. 利用Nginx中的Upstream模块配置服务器负载均衡

    1. 前言 nginx有一个最大的功能就是可以实现服务器的负载均衡,本篇博文就利用nginx中的upstream模块来配置一个简单的负载均衡.关于nginx的安装和配置文件可以查阅博文:windows ...

  7. 使用Typescript重构axios(十四)——实现拦截器

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  8. p4141(消失之物)

    题目描述 ftiasch 有 N 个物品, 体积分别是 W1, W2, …, WN. 由于她的疏忽, 第 i 个物品丢失了. “要使用剩下的 N – 1 物品装满容积为 x 的背包,有几种方法呢?” ...

  9. 学Linux到底学什么?

    前言 我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到底要学什么? 为什么要学Linux 在回答学什么之前,我们先看看为什么要学.首先我们需要认识到的是,很多服 ...

  10. nyoj 467 中缀式变后缀式 (栈)

    中缀式变后缀式 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀 ...