day 24 组合的补充
一、组合的补充:
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 组合的补充的更多相关文章
- [ACM_数学] Fibonacci Nim(另类取石子,2-4组合游戏)
游戏规则: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍). ...
- 【趣味分享】C#实现回味童年的24点算法游戏
一.24点游戏玩法规则效果展示 1.初始化界面 2.开始游戏界面 3.游戏超时界面 4.查看答案界面 5.答对界面 6.答错界面 7.计算表达式的验证界面 8.一副牌算完开始新一副牌界面 到这里24点 ...
- python编写排列组合,密码生产功能
python编写排列组合 python在编写排列组合是会用到 itertools 模块 排列 import itertools mylist = list(itertools.permutation ...
- 以太坊挖矿源码:ethash算法
本文具体分析以太坊的共识算法之一:实现了POW的以太坊共识引擎ethash. 关键字:ethash,共识算法,pow,Dagger Hashimoto,ASIC,struct{},nonce,FNV ...
- JavaScript继承的几种实现
0 什么是继承 继承就是获得存在对象已有的属性和方法的一种方式. [2019.4.26 更新]今日又重新学习了一下JS的继承,在这里整理一下以前的笔记并补充一些新的感悟. 1 JS中继承的几种实现方法 ...
- [Beautifulzzzz的博客目录] 快速索引点这儿O(∩_∩)O~~,红色标记的是不错的(⊙o⊙)哦~
3D相关开发 [direct-X] 1.direct-X最小框架 [OpenGL] 1.环境搭建及最小系统 [OpenGL] 2.企业版VC6.0自带的Win32-OpenGL工程浅析 51单片机 [ ...
- synchronized关键字,Lock接口以及可重入锁ReentrantLock
多线程环境下,必须考虑线程同步的问题,这是因为多个线程同时访问变量或者资源时会有线程争用,比如A线程读取了一个变量,B线程也读取了这个变量,然后他们同时对这个变量做了修改,写回到内存中,由于是同时做修 ...
- 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码
一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...
- 韩顺平_JAVA_视频教程_下载(打开迅雷,直接复制链接地址即可下载)
ed2k://|file|韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇.avi|37021064|f4fb2fb3db938a642146ccc8f0935fed|h=ao2k3ep7p ...
随机推荐
- TCP UDP基本编程(一)
tcp udp均可以用来网络通信,在使用之前建议先搜索一下相关网络连接的基本知识,可以更好的理解和使用,tcp建议看下如下文章:https://blog.csdn.net/chuangsun/arti ...
- 如何让多个不同类型的后端网站用一个nginx进行反向代理实际场景分析
前段时间公司根据要求需要将聚石塔上服务器从杭州整体迁移到张家口,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完成 大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今 ...
- Mui 微信支付、支付宝支付
利用mui 发起手机微信和支付宝支付 payStatement :调起微信支付接口的参数 参考文档: https://pay.weixin.qq.com/wiki/doc/api/app/app.ph ...
- gym102302E_Chi's performance
题意 给n个二元组(v,p),要求排序使得v从小到大,而且总价值最大,价值定义为相邻两个v值不同的p值之差绝对值之和. 分析 in a row原来是相邻的意思. 对于每个相同v值的块来说,有用的数只有 ...
- RESTful基本概念
文章目录 01 前言 02 RESTful的来源 03 RESTful6大原则 1. C-S架构 2. 无状态 3.统一的接口 4.一致的数据格式 4.系统分层 5.可缓存 6.按需编码.可定制代码( ...
- 关于 typeof 的暂时性死区,了解一下
将知识转化为能力,核心是掌握20%行业核心技能,把学习培养成习惯,持续深耕,用能力解决问题,方能持续成长!那么基础好,就是必须条件. 最近看 数据类型,知道数据类型判断有三种方式,typeof 是其中 ...
- 学习笔记05一般处理程序ashx
1.获取由表单传过来的参数var value1 = HttpContext.Request["健"]; 2.使得网站目录下的相对路径转化为绝对路径:(用于文件操作)var file ...
- 精心整理(含图版)|你要的全拿走!(R数据分析,可视化,生信实战)
本文首发于“生信补给站”公众号,https://mp.weixin.qq.com/s/ZEjaxDifNATeV8fO4krOIQ更多关于R语言,ggplot2绘图,生信分析的内容,敬请关注小号. 为 ...
- NOI导刊总结
NOI导刊总结 前两天去郑州,参加了什么NOI导刊的培训,然后就发现大佬是真的多,还十分意外的发现了一个事,清华北大是不是发笔记本和耳机,为啥三个老师的都一模一样... 这几天主要以讲.NOIP知识点 ...
- mysql找出重复数据的方法
mysql找出重复数据的方法<pre>select openid,count(openid) from info group by openid,jichushezhi_id HAVING ...