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高级笔记(七)魔法属性的更多相关文章

  1. 『无为则无心』Python面向对象 — 60、魔法属性

    目录 1.魔法属性__name__ 2.魔法属性__bases__ 3.魔法属性__mro__ 4.魔法属性__doc__ 5.魔法属性__module__ 和__class__ 6.魔法属性__di ...

  2. Python高级笔记(六)-- property属性【重要】

    1. property属性 目的:简化逻辑流程 class Goods(object): @property def size(self): return 100 obj = Goods() ret ...

  3. Python学习笔记七

    面向对象编程 面向对象的特性如下: 类:具有相同属性和方法的一类事物,成为类. 对象:类的实例化后的结果,一个类可以实例化多个对象,每个对象也可以不同的属性. 封装:在类中对数据的赋值,类里面包含着类 ...

  4. Python高级笔记(九)Python使用MySQL

    1. MySQL基本使用 1.1 数据库简介 Mysql: 关系型数据库,做网站 redis:当作缓存 mongodb:非关系型数据库,做爬虫 SQL语句: DQL:数据查询语言,用于对数据进行查询, ...

  5. python学习笔记七 初识socket(进阶篇)

    socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  6. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  7. Python高级笔记(五)--实例方法、静态方法和类方法

    1. 类属性.实例属性 类属性在内存中只保存一份 实例属性在每个对象中都要保持一份 obj.__class__.country="xxx": 可以修改类属性 2. 实例方法.静态方 ...

  8. python学习笔记(七)、异常

    在实际开发中,往往不会出现一个系统编写下来,没有出现任何一个bug.为处理这种会出现错误的地方,如除数为零的除法,python提供了非常强大的机制————异常处理机制. 1 异常 python使用异常 ...

  9. python学习笔记(七) 类和pygame实现打飞机游戏

    python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = ...

随机推荐

  1. 《CoderXiaoban》第九次团队作业:Beta冲刺与验收准备3

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十三 团队作业9:BETA冲刺与团队项目验收 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件黑盒 ...

  2. 【Java】《Java程序设计基础教程》第三章学习

    3.1 类 类在Java语言中是一种最基本的引用数据类型,是组成Java程序的基本要素.具有相同属性(状态)和方法(行为)的一组对象的集合称为类,其内部包括属性和方法两个主要部分. 3.11 类的定义 ...

  3. CH6801 棋盘覆盖

    6801 棋盘覆盖 0x60「图论」例题 描述 给定一个N行N列的棋盘,已知某些格子禁止放置.求最多能往棋盘上放多少块的长度为2.宽度为1的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张 ...

  4. Fiddler——如何抓取PHP的curl请求

    前言 本文主要介绍如何使用fiddler工具,来进行抓取PHP的curl请求,如果你会使用fiddler,那就是一行代码的事, 不会也没事,本文会教你如何简单的使用. 步骤 代码 设置桥接网络为127 ...

  5. 更改intellij高亮字体背景颜色

    intellij工具中依次进入file -> settings -> editor -> colors & fonts -> general,在右侧窗口中将result ...

  6. java EL表达式中${param.name}详细

    在浏览器地址输入,表示传入一个参数test,值为123 URL:http://localhost:8888/Test/index.jsp?test=123 <body> ${test} $ ...

  7. NISP二级笔记(一) 信息安全管理

    ISO27001 信息安全管理体系要求 ISO27002 信息安全控制措施(实用规则) ISO27003 信息安全管理体系实施指南 ISO27004 信息安全管理测量 ISO27005 信息安全风险管 ...

  8. C# 判断程序是否执行 进行启动或前台显示

    #region 显示程序 [DllImport("user32.dll", EntryPoint = "FindWindow")] public static ...

  9. uic

    uic user interface complieruic mainwindow.ui >> ui_mainwidow.h

  10. 2017.10.4 国庆清北 D4T1 财富

    (其实这题是luogu P1901 发射站 原题,而且数据范围还比luogu小) 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在 ...