Python高级笔记(七)魔法属性
1. 私有属性 名字重整

print(Test.__dict__)
{'__weakref__': <attribute '__weakref__' of 'Test' objects>, '__init__': <function Test.__init__ at 0x00000000010C59D8>, '__doc__': None, '__dict__': <attribute '__dict__' of 'Test' objects>, '__module__': '__main__'}
2. 魔法属性
2.1 __doc__
- 表示类的描述信息

2.2 __module__和 __class__
__module__: 表示当前操作的对象在哪个模块
__class__: 表示当前操作的对象的类是什么

2.3 __init__
- 初始化方法,通过类创建对象时,自动触发执行
2.4 __del__
当对象在内存中被释放时,自动触发执行
注:此方法一般无需定义,因为Python是高级语言,程序员无需关系内存的分配和释放,因此工作都是交给Python解释器来执行,所以,__del__的调用是 由解释器在进行垃圾回收时自动触发执行的。
2.5 __call__
- 对象后面加括号,触发执行
注意:__init__方法的执行是由创建对象触发的,即:对象 = 类名();而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()
# -*- encoding=utf-8 -*- class Foo(object):
def __init__(self):
pass def __call__(self, *args, **kwargs):
print("__call__") c = Foo()
c()
Foo()()

2.6 __dict__
- 类或对象中的所有属性
类的实例属性属于对象; 类中的类属性和方法等属于类
# -*- encoding=utf-8 -*- class Foo(object):
country = "douzi" def __init__(self, name, count):
self.name = name
self.count = count def func(self, *args, **kwargs):
print("func") # 获取类的属性,即:类属性,方法
print(Foo.__dict__) # 获取对象obj1的属性
obj1 = Foo("test", 134)
print(obj1.__dict__)
{'__dict__': <attribute '__dict__' of 'Foo' objects>, '__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': None, 'func': <function Foo.func at 0x000000000A538378>, 'country': 'douzi', '__init__': <function Foo.__init__ at 0x00000000010E59D8>}
{'count': 134, 'name': 'test'}
2.7 __str__
- 如果一个类中定一个 __str__方法,那么在打印对象时,默认输出该方法的返回值
class Foo(object):
def __str__(self):
return "douzi" t = Foo()
print(t)
douzi
2,8 __getitem__、__setitem__、__delitem__
- 用于索引操作,如字典。以上分别表示获取、设置、删除数据
- 表示实现了该三个方法,该类即当列表用
class Foo(object):
def __getitem__(self, item):
print("__getitem__:", item)
def __setitem__(self, key, value):
print("__setitem__:", key, value)
def __delitem__(self, key):
print("__delitem__:", key)
obj = Foo()
res = obj["k1"] # 自动触发执行 __getitem__
obj["k2"] = "douzi" # 自动触发执行 __setitem__
del obj["k1"] # 自动触发执行 __delitem__

2.9 __getslice__、__setslice__、__delslice__
- 该三个方法用于分片操作,如:列表
class Foo(object):
def __getslice__(self, i, j):
print("__getslice__:", i, j)
def __setslice__(self, i, j, sequence):
print("__setslice__:", i, j, sequence)
def __delslice__(self, i, j):
print("__delslice__:", i, j)
obj = Foo()
obj[0:2]
obj[0:2] = [11, 22, 33, 44]
del obj[0:2]

Python高级笔记(七)魔法属性的更多相关文章
- 『无为则无心』Python面向对象 — 60、魔法属性
目录 1.魔法属性__name__ 2.魔法属性__bases__ 3.魔法属性__mro__ 4.魔法属性__doc__ 5.魔法属性__module__ 和__class__ 6.魔法属性__di ...
- Python高级笔记(六)-- property属性【重要】
1. property属性 目的:简化逻辑流程 class Goods(object): @property def size(self): return 100 obj = Goods() ret ...
- Python学习笔记七
面向对象编程 面向对象的特性如下: 类:具有相同属性和方法的一类事物,成为类. 对象:类的实例化后的结果,一个类可以实例化多个对象,每个对象也可以不同的属性. 封装:在类中对数据的赋值,类里面包含着类 ...
- Python高级笔记(九)Python使用MySQL
1. MySQL基本使用 1.1 数据库简介 Mysql: 关系型数据库,做网站 redis:当作缓存 mongodb:非关系型数据库,做爬虫 SQL语句: DQL:数据查询语言,用于对数据进行查询, ...
- python学习笔记七 初识socket(进阶篇)
socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- Python学习笔记七-错误和异常
程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...
- Python高级笔记(五)--实例方法、静态方法和类方法
1. 类属性.实例属性 类属性在内存中只保存一份 实例属性在每个对象中都要保持一份 obj.__class__.country="xxx": 可以修改类属性 2. 实例方法.静态方 ...
- python学习笔记(七)、异常
在实际开发中,往往不会出现一个系统编写下来,没有出现任何一个bug.为处理这种会出现错误的地方,如除数为零的除法,python提供了非常强大的机制————异常处理机制. 1 异常 python使用异常 ...
- python学习笔记(七) 类和pygame实现打飞机游戏
python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = ...
随机推荐
- 《CoderXiaoban》第九次团队作业:Beta冲刺与验收准备3
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十三 团队作业9:BETA冲刺与团队项目验收 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件黑盒 ...
- 【Java】《Java程序设计基础教程》第三章学习
3.1 类 类在Java语言中是一种最基本的引用数据类型,是组成Java程序的基本要素.具有相同属性(状态)和方法(行为)的一组对象的集合称为类,其内部包括属性和方法两个主要部分. 3.11 类的定义 ...
- CH6801 棋盘覆盖
6801 棋盘覆盖 0x60「图论」例题 描述 给定一个N行N列的棋盘,已知某些格子禁止放置.求最多能往棋盘上放多少块的长度为2.宽度为1的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张 ...
- Fiddler——如何抓取PHP的curl请求
前言 本文主要介绍如何使用fiddler工具,来进行抓取PHP的curl请求,如果你会使用fiddler,那就是一行代码的事, 不会也没事,本文会教你如何简单的使用. 步骤 代码 设置桥接网络为127 ...
- 更改intellij高亮字体背景颜色
intellij工具中依次进入file -> settings -> editor -> colors & fonts -> general,在右侧窗口中将result ...
- java EL表达式中${param.name}详细
在浏览器地址输入,表示传入一个参数test,值为123 URL:http://localhost:8888/Test/index.jsp?test=123 <body> ${test} $ ...
- NISP二级笔记(一) 信息安全管理
ISO27001 信息安全管理体系要求 ISO27002 信息安全控制措施(实用规则) ISO27003 信息安全管理体系实施指南 ISO27004 信息安全管理测量 ISO27005 信息安全风险管 ...
- C# 判断程序是否执行 进行启动或前台显示
#region 显示程序 [DllImport("user32.dll", EntryPoint = "FindWindow")] public static ...
- uic
uic user interface complieruic mainwindow.ui >> ui_mainwidow.h
- 2017.10.4 国庆清北 D4T1 财富
(其实这题是luogu P1901 发射站 原题,而且数据范围还比luogu小) 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在 ...