一、组合的补充:

  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. vue-route动态路由

    配置子路由: 路由的视图都需要使用view-router 子路由也可以嵌套路由使用: children来做嵌套如上图 使用location.页面name就可以做页面跳转 mounted:挂载,延迟跳转 ...

  2. .NET手撸2048小游戏

    .NET手撸2048小游戏 2048是一款益智小游戏,得益于其规则简单,又和2的倍数有关,因此广为人知,特别是广受程序员的喜爱. 本文将再次使用我自制的"准游戏引擎"FlysEng ...

  3. Display(显示) 与 Visibility(可见性)

    display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏. 隐藏元素 - display:none或visibility:hidden 隐藏一个元素可以通过把dis ...

  4. 最强中文NLP预训练模型艾尼ERNIE官方揭秘【附视频】

    “最近刚好在用ERNIE写毕业论文” “感觉还挺厉害的” “为什么叫ERNIE啊,这名字有什么深意吗?” “我想让艾尼帮我写作业” 看了上面火热的讨论,你一定很好奇“艾尼”.“ERNIE”到底是个啥? ...

  5. (IDEA) 设置编码统一为UTF-8

    File->Settings->Editor->File Encodings

  6. 《Effective Java》 读书笔记(八)避免使用Finalizer和Cleaner机制

    Finalizer和Cleaner并不等同于C++中的析构函数,是不确定多久会被调用的,甚至有时候可能不会被调用,因此除了作为一个安全网或者终止非关键的本地资源,不应该在Finalizer或Clean ...

  7. CSPS模拟 94

    以后干脆不要在准备提交的代码里放调试信息. 再也不忘删printf可是memset还是看不见... T1 玄学错误,不想研究.skyh帮我研究出来了.HACKDATA:1 1 T2 傻逼做法. 发现一 ...

  8. NOIP模拟测试33

    这次考试很失败. T1sb题,40分钟切了,当我打完对拍全过去上厕所的时候,碰到了yxm. yxm:我又自闭了,没有一点进展. 我:…… yxm:你会做几个? 我(思考再三):T1只会暴力. (我这么 ...

  9. 【建站03】WordPress网站如何去除RSS功能

    哈喽,大家好,我是帝哥,最近有小伙伴问我,如何去掉WordPress上的RSS功能,这个功能呢,说实话,我们很少会用到. 但是如果有点强迫症的话看着会很不舒服,所以,今天和大家分享一下如何去掉Word ...

  10. 针对CCTV摄像头的扫描爆破工具 :Cameradar

    针对CCTV摄像头的扫描爆破工具 :Cameradar 0x01功能介绍              简述:Cameradar 是一款基于docker使用的RTSP数据流访问工具.该工具可以通过基于RT ...