day21双下方法,源码相关,异常处理
#!/usr/bin/env python
# -*- coding:utf-8 -*- # 1.列举你了解的面向对象中的特殊成员,并为每个写代码示例。
'''
__init__初始化:
class A:
def __init__(self, name):
self.name = name __new__创建空对象:
class B:
def __new__(cls, *args, **kwargs):
return object.__new__(cls) __ call__调用:
class C:
def __call__(self, *args, **kwargs):
print('执行call方法') __ getitem__ __ setitem__ __ delitem__:
class D:
def __setitem__(self, key, value):
pass
def __getitem__(self, item):
return item+'xxx'
def __delitem__(self, key):
pass __str__ return什么输出什么:
class E:
def __str__(self):
return 123 __dict__ 对象中找到所有变量并将其转换为字典:
class F:
def __init__(self, name):
self.name = name 上下文管理:
class Foo(object):
def __enter__(self):
self.x = open('a.txt',mode='a',encoding='utf-8')
return self.x
def __exit__(self, exc_type, exc_val, exc_tb):
self.x.close() 两个对象相加:
class G(object):
def __add__(self, other):
return 123 obj1 = G()
obj2 = G()
val = obj1 + obj2
print(val)
''' # 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())
# 8 8 None 9 9 None
''' # 3.看代码写结果
'''
class Base(object):
def __init__(self, a1):
self.a1 = a1 def f2(self, arg):
print(self.a1, arg) class Foo(Base):
def f2(self, arg):
print('666') obj_list = [Base(1), Foo(2), Foo(3)]
for obj in obj_list:
obj.f2(4)
# 1 4 666 666
''' # 4.看代码写结果
'''
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') config_obj_list = [StarkConfig(1), StarkConfig(2), RoleConfig(3)]
for item in config_obj_list:
print(item.num)
# 1 2 3
''' # 5.看代码写结果
'''
class StarkConfig(object): def __init__(self, num):
self.num = num def changelist(self, request):
print(self.num, request) class RoleConfig(StarkConfig):
pass config_obj_list = [StarkConfig(1), StarkConfig(2), RoleConfig(3)]
for item in config_obj_list:
item.changelist(168)
# 1 168 2 168 3 168
''' # 6.看代码写结果
'''
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) config_obj_list = [StarkConfig(1), StarkConfig(2), RoleConfig(3)]
for item in config_obj_list:
item.changelist(168)
# 1 168 2 168 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) config_obj_list = [StarkConfig(1), StarkConfig(2), RoleConfig(3)]
config_obj_list[1].run()
config_obj_list[2].run()
# 2 999 666 3
''' # 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()
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
print(site._registry) # {'range':666,'shilei':438,'lyd':地址,'yjl':地址,'fgz':地址}
''' # 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.changelist(5)
# 19 5 20 5 666 33
''' # 10.看代码写结果
'''
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()
# 19 999 20 999 666 33
''' # 11.看代码写结果
'''
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)) # 2
for k, row in site._registry.items():
row.run()
# userinfo名称 999 department 999
''' # 12.看代码写结果
'''
class F3(object):
def f1(self):
ret = super().f1()
print(ret)
return 123 class F2(object):
def f1(self):
print('123') class F1(F3, F2):
pass obj = F1()
obj.f1()
# 123 None
''' # 13.看代码写结果
'''
class Base(object):
def __init__(self, name):
self.name = name class Foo(Base):
def __init__(self, name):
super().__init__(name)
self.name = "于大爷" obj1 = Foo(1)
print(obj1.name) # 于大爷 obj2 = Base(1)
print(obj2.name) # 1
''' # 14.看代码写结果
'''
class Base(object):
pass class Foo(Base):
pass obj = Foo()
print(type(obj) == Foo) # True
print(type(obj) == Base) # False
print(isinstance(obj, Foo)) # True
print(isinstance(obj, Base)) # True
''' # 15.看代码写结果
'''
class StarkConfig(object):
def __init__(self, num):
self.num = num
def __call__(self, *args, **kwargs):
print(self.num)
class RoleConfig(StarkConfig):
def __call__(self, *args, **kwargs):
print(self.num) v1 = StarkConfig(1)
v2 = RoleConfig(11) v1() # 1
v2() # 11
''' # 16.看代码写结果
'''
class StarkConfig(object):
def __init__(self, num):
self.num = num
def run(self):
self()
def __call__(self, *args, **kwargs):
print(self.num)
class RoleConfig(StarkConfig):
def __call__(self, *args, **kwargs):
print(345)
def __getitem__(self, item):
return self.num[item]
v1 = RoleConfig('alex')
v2 = StarkConfig("wupeiqi")
print(v1[1]) # l
print(v2()) # wupeiqi None
''' # 17.补全代码
'''
class Context:
def __enter__(self):
print('开始')
return self def do_something(self):
print('进行中') def __exit__(self, exc_type, exc_val, exc_tb):
print('退出') with Context() as ctx:
ctx.do_something()
''' # 18.补全代码
'''
class Stack(object):
def __init__(self):
self.data_list = [] def push(self, val):
self.data_list.append(val) def pop(self):
self.data_list.pop(-1) obj = Stack()
# 调用push方法,将数据加入到data_list中。
obj.push('alex')
obj.push('武沛齐')
obj.push('金老板')
# 调用pop讲数据从data_list获取并删掉,注意顺序(按照后进先出的格式)
v1 = obj.pop() # 金老板
v2 = obj.pop() # 武沛齐
v3 = obj.pop() # alex
# 请补全Stack类中的push和pop方法,将obj的对象维护成 后进先出 的结构。
''' # 19.如何主动触发一个异常?
'''
raise Exception()
''' # 20.看代码写结果
'''
def func(arg):
try:
int(arg)
except Exception as e:
print('异常')
finally:
print('哦') func('123') # 哦
func('二货') # 异常 哦
'''
day21双下方法,源码相关,异常处理的更多相关文章
- 痞子衡嵌入式:MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异. 程序函数库是一个包含已经编译好代码和数据的函数集合,这 ...
- erlang下lists模块sort(排序)方法源码解析(二)
上接erlang下lists模块sort(排序)方法源码解析(一),到目前为止,list列表已经被分割成N个列表,而且每个列表的元素是有序的(从大到小) 下面我们重点来看看mergel和rmergel ...
- erlang下lists模块sort(排序)方法源码解析(一)
排序算法一直是各种语言最简单也是最复杂的算法,例如十大经典排序算法(动图演示)里面讲的那样 第一次看lists的sort方法的时候,蒙了,几百行的代码,我心想要这么复杂么(因为C语言的冒泡排序我记得不 ...
- python之路-双下方法
双下方法 定义: 双下方法是特殊方法,他是解释器提供的,由双下线加方法名加双下划线 __方法名__具有特殊意义的方法 双下方法主要是Python源码程序员使用的,元编程 我们在开发中尽量不要使用双下方 ...
- Python面向对象 | 双下方法
定义:双下方法是特殊方法,他是解释器提供的.由双下划线+方法名+双下划线 .它具有特殊意义的方法,双下方法主要是python源码程序员使用的,我们在开发中尽量不要使用双下方法,但是深入研究双下方法,更 ...
- Python反射和内置方法(双下方法)
Python反射和内置方法(双下方法) 一.反射 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发 ...
- Python面向对象之反射,双下方法
一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序 ...
- day 22 反射,双下方法
反射: 反射:通过字符串去操作对象(类,空间等等)的属性或方法反射的四个方法 hasattr *** getattr *** setattr *** delattr *** # getattr 用法c ...
- day26——tyoe元类与object的联系、反射、函数与方法的区别、双下方法
day26 type元类与object联系 type 获取对象从属于的类 python 中一切皆对象, 类在某种意义上也是一个对象,python中自己定义的类,以及大部分内置类,都是由type元类(构 ...
随机推荐
- vsftpd.configro
mmp卸载了vsftpd后 配置文件没了 安装也没有 留个做备份 嘿嘿 原始的: # Please see vsftpd.conf. for all compiled in defaults. # # ...
- IOS开发证书常见问题
1.本地Provisioning Profiles存放路径 ~/Library/MobileDevice/Provisioning Profiles 2.this action could not b ...
- L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误(转)
L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误 错误描述:“ L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误” 只有这个没有错误码. ...
- @EnableFeignClients 注解
feignClents在spring容器里找不到的原因 当使用的feignClents 来自引用别的工程时,需要指定包名,如果不指定就算使用ComponentScan 扫描也不行 import org ...
- 转://MySQL客户端工具的选择
先说我的选择:SQLyog. 尝试的客户端:Toad for MySQL.MySQL-Front.Navicat for MySQL.SQLyog. 官方下载链接: Toad for MySQL:ht ...
- 【技术说明】iOS10来了,AppCan已全面适配!
IPhone 7出了,你的肾还好吗?别紧张,不买肾7,同样可以体验最新的iOS10! AppCan对引擎.插件.编译系统等都进行了重要升级,让你的APP轻松适配iOS10!具体如何,请往下看! 引擎 ...
- 【故障公告】推荐系统中转站撑爆服务器 TCP 连接引发的故障
上周五下午,我们在博客中部署了推荐系统,在博文下方显示“最新IT新闻”的地方显示自动推荐的关联博文.我们用的推荐系统是第四范式的推荐服务,我们自己只是搭建了一个推荐系统中转站(基于 ASP.NET C ...
- centos6.8 安装jenkins
1.使用yum安装java环境 #查看CentOS自带JDK是否已安装yum list installed |grep java #查看yum库中的Java安装包yum -y list java*#以 ...
- win10x64 批处理自动安装打印机
系统版本:Windows 10企业版 64位(10.0 ,版本17134)- 中文(简体) 话不多说,直接上脚本: REM 提升管理员权限 @echo off chcp 65001 >nul s ...
- 微信内分享第三方H5链接无法使用内置浏览器打开的解决方案
很多朋友在微信内想分享转发H5链接的时候都会很容易碰到H5链接在微信内无法打开或在微信内无法打开app下载页的情况.通常这种情况微信会给个提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢, ...