python 面向对象(类的特殊成员)
python 面向对象:
(思维导图 ↑↑↑↑)
类的特殊成员
python的类成员存在着一些具有特殊含义的成员
1.__init__: 类名() 自动执行 __init__
class Foo(object):
def __init__(self,a1,a2):
self.a1 = a1
self.a2 = a2
obj = Foo(1,2)
2.__call__: 对象() 自动执行__call__
class Foo(object):
def __call__(self, *args, **kwargs):
print(1111,args,kwargs)
return 123
obj = Foo()
ret = obj(6,4,2,k1=456)
3.__getitem__: 对象['xx'] 自动执行__getitem__
class Foo(object):
def __getitem__(self, item):
print(item)
return 8
obj = Foo()
ret = obj['yu']
print(ret)
4.__setitem__: 对象['xx'] = 11 自动执行__setitem__
class Foo(object):
def __setitem__(self, key, value):
print(key, value, 111111111)
obj = Foo()
obj['k1'] = 123
5.__delitem__: del 对象[xx] 自动执行__delitem__
class Foo(object):
def __delitem__(self, key):
print(key)
obj = Foo()
del obj['uuu']
6.__add__: 对象+对象 自动执行__add__
class Foo(object):
def __init__(self, a1, a2):
self.a1 = a1
self.a2 = a2
def __add__(self,other):
return self.a1 + other.a2
obj1 = Foo(1,2)
obj2 = Foo(88,99)
ret = obj2 + obj1
print(ret)
7.__enter__ / __exit__: with 对象 自动执行__enter__ / __exit__
class Foo(object):
def __init__(self, a1, a2):
self.a1 = a1
self.a2 = a2
def __enter__(self):
print('')
return 999 def __exit__(self, exc_type, exc_val, exc_tb):
print('')
obj = Foo(1,2)
with obj as f:
print(f)
print('内部代码')
8.__new__: 构造方法
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)
python 面向对象(类的特殊成员)的更多相关文章
- 『无为则无心』Python面向对象 — 51、私有成员变量(类中数据的封装)
目录 1.私有成员变量介绍 (1)私有成员变量概念 (2)私有成员变量特点 (3)私有成员变量体验 2.属性私有化工作原理 3.定义成员变量的标识符规范 4.私有成员变量的获取和设置方式 1.私有成员 ...
- python面向对象(类的成员及类方法)
类的普通成员 字段 方法 属性 类的高级成员 静态字段 静态方法 属性方法 类方法 类成员修饰符 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中, ...
- Python面向对象 | 类的成员
一. 细分类的组成成员 之前咱们讲过类大致分两块区域,静态字段部分和方法部分. 每个区域详细划分又可以分为: class A: company = '阿里巴巴' # 静态变量(静态字段) __tel ...
- python 面向对象(类)
面向对象,即是将具备某种共性的事物抽象成一个类(模板),然后再根据类来创建实例对象进行具体的使用. 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写, ...
- Python面向对象之结构与成员
1.面向对象结构分析: ----面相对象整体大致分为两块区域: --------第一部分:静态字段(静态变量)部分 --------第二部分:方法部分 --每个大区域可以分为多个小部分: class ...
- JavaSE| 面向对象-类的五大成员
面向对象 面向对象只是其中一种编程思想,还有很多其他的编程思想:面向过程.面向切面.面向服务编程... 面向过程的思维方式:注重步骤.过程,面向过程强调的是功能行为: 面向对象的思维方式:关注的是“对 ...
- python面向对象(类和对象及三大特性)
类和对象是什么 创建类 新式类 和 经典类 面向对象三大特性 继承 封装 多态 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- 026.Python面向对象类的相关操作以及对象和类的删除操作
类的相关操作 定义的类访问共有成员的成员和方法 定义的类动态添加公有成员的属性和方法 定义的类删除公有成员的属性和方法 1 定义一个基本的类 #定义一个类 class Plane(): #添加一个共有 ...
- Python面向对象-类成员
类的成员可以分为三大类:字段.方法和属性: 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在 ...
随机推荐
- C++多线程1.createthread
C++ 多线程知识1.多线程入门 CreateThread 20131021 1.介绍WinAPI中的CreateThread 函数原型: HANDLE WINAPI CreateThread( LP ...
- bzoj2700
题解: dp dp[i][j]表示i个红,j个绿的最小代价 然后再加上两位k,l,表示k个红连,l个绿连 然后转移 代码: #include<bits/stdc++.h> using na ...
- 转载-lvs官方文档-LVS集群中的IP负载均衡技术
章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...
- redis的Hash类型以及其操作
hashes类型 hashes类型及操作Redis hash是一个string类型的field和value的映射表.它的添加.删除操作都是0(1)(平均).hash特别适合用于存储对象.相较于将对象的 ...
- 一台服务器的IIS绑定多个域名
等待十分钟: 在IIS上配置:
- eclipse集群tomcat
eclipse集群tomcat 1. File -> new -> other 选择server. 2. 选择Apache下边对应的tomcat版本,配置tomcat名称即可.由于我本 ...
- vue.js 源代码学习笔记 ----- instance render
/* @flow */ import { warn, nextTick, toNumber, _toString, looseEqual, emptyObject, handleError, loos ...
- jQuery 滑动选项卡jQuery tabslet
Tabslet Yet another jQuery plugin for tabs, lightweight, easy to use and with some extra features ...
- Swift 3 点击屏幕任意位置隐藏键盘
func hideKeyboardWhenTappedAround() { let tap: UITapGestureRecognizer = UITapGestureRecognizer(targe ...
- angular 全局 监听路由变化
app.run(['$rootScope', '$location', function($rootScope, $location) { /* 监听路由的状态变化 */ $rootScope.$on ...