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面向对象-类成员
类的成员可以分为三大类:字段.方法和属性: 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在 ...
随机推荐
- CF910B
题解: dp f[i][j]表示i根a,j根b要多少 然后随便转移一下 代码: #include<bits/stdc++.h> using namespace std; ][],n,a,b ...
- 《Effective C++》第3章 资源管理(2)-读书笔记
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...
- 熟悉linux命令
<鸟哥的linux私房菜>这本书终于看到了敲命令行这块了,有点小激动,打开虚拟机,开始~~~敲!!! 登录界面,用户名密码~~~ 登录成功,下面开始熟悉一下,linux的常见命令了: li ...
- Kotlin Reference (六) Control Flow
most from reference if表达式 在kotlin中,if是一个表达式,即它返回一个值.kotlin中没有Java中的三元运算符. // Traditional usage var m ...
- BDD测试框架Spock概要
前言 为了找到一个适合自己的.更具操作性的.以DDD为核心的开发方法,我最近一直在摸索如何揉合BDD与DDD.围绕这个目标,我找到了Impact Mapping → Cucumber → Spock ...
- caffe学习4——net
参考文献 1 The net jointly defines a function and its gradient by composition and auto-differentiation. ...
- css3实现对radio和checkbox的美化
一,如何隐藏小程序中的很粗的滚动条,实现页面的美化? tit: 在开发小程序的过程中,无论是横向或者纵向当产生滚动条时,系统默认的滚动条会很粗,效果展示十分难看,我们可以通过设置如下wxss代码实 ...
- cocos2d-x 3.17 jsb android运行报错
编译成功,运行失败,提示如下: 2018-11-15 19:09:56.343 2820-2852/net.jd85.test D/cocos2d-x debug info: cocos2d: ful ...
- HDU2157 How many ways矩阵再识
春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线去教室 ...
- javascript中typeof用法
JS中的变量是松散类型(即弱类型)的,可以用来保存任何类型的数据. typeof 可以用来检测给定变量的数据类型,可能的返回值: 1. 'undefined' --- 这个值未定义: 2. 'bool ...