python class 属性是什么_python class 的属性
Class 有一些特殊的属性,便于我们获得一些额外的信息。
>>> class Class1(object):
"""Class1 Doc."""
def __init__(self):
self.i = 1234
>>> Class1.__doc__ # 类型帮助信息
'Class1 Doc.'
>>> Class1.__name__ # 类型名称
'Class1'
>>> Class1.__module__ # 类型所在模块
'__main__'
>>> Class1.__bases__ # 类型所继承的基类
(,)
>>> Class1.__dict__ # 类型字典,存储所有类型成员信息。
>>> Class1().__class__ # 类型
>>> Class1().__module__ # 实例类型所在模块
'__main__'
>>> Class1().__dict__ # 对象字典,存储所有实例成员信息。
{'i': 1234}
成员Python Class 同样包含类型和实例两种成员。
>>> class Class1:
i = 123 # Class Field
def __init__(self):
self.i = 12345 # Instance Field
>>> print Class1.i
123
>>> print Class1().i
12345
两个比较重要的取实例属性的函数:
getattr(实例,属性名),hasattr(实例,属性名)判断属性名是否属于实例。
如上例:s='i',getattr(Class1(),s)=12345
hasattr(Class1(),s)=True
-----------------------
有几个很 "特殊" 的 "规则" 需要注意。
(1) 我们可以通过实例引用访问类型成员。因此下面的例子中 self.i 实际指向 Class1.i,直到我们为实例新增了一个成员 i。
>>> class Class1:
i = 123
def __init__(self):
print self.i
print hex(id(self.i))
>>> hex(id(Class1.i)) # 显示 Class1.i
'0xab57a0'
>>> a = Class1() # 创建 Class1 实例,我们会发现 self.i 实际指向 Class1.i。
123
0xab57a0
>>> Class1.__dict__ # 显示 Class1 成员
{'i': 123, '__module__': '__main__', '__doc__': None, '__init__': }
>>> a.__dict__ # 显示实例成员
{}
>>> a.i = 123456789 # 为实例新增一个成员 i
>>> hex(id(a.i)) # 显示新增实例成员地址
'0xbbb674'
>>> a.__dict__ # 显示实例成员
{'i': 123456789}
我们可以在成员名称前添加 "__" 使其成为私有成员。
>>> class Class1:
__i = 123
def __init__(self):
self.__x = 0
def __test(self):
print id(self)
事实上这只是一种规则,并不是编译器上的限制。我们依然可以用特殊的语法来访问私有成员。
>>> Class1._Class1__i
123
>>> a = Class1()
>>> a._Class1__x
0
>>> a._Class1__test()
13860376
-----------------------
除了静态(类型)字段,我们还可以定义静态方法。
>>> class Class1:
@staticmethod
def test():
print "static method"
>>> Class1.test()
static method
重载
Python 支持一些特殊方法和运算符重载。
>>> class Class1:
def __init__(self):
self.i = 0
def __str__(self):
return "id=%i" % id(self)
def __add__(self, other):
return self.i + other.i
>>> a = Class1()
>>> a.i = 10
>>> str(a)
'id=13876120'
>>> b = Class1()
>>> b.i = 20
>>> a + b
30
通过重载 "__eq__",我们可以改变 "==" 运算符的行为。
>>> class Class1:
pass
>>> a = Class1()
>>> b = Class1()
>>> a == b
False
>>> class Class1:
def __eq__(self, x):
return 55
>>> a = Class1()
>>> b = Class1()
>>> a == b
55
python class 属性是什么_python class 的属性相关推荐
- python中的类属性和类方法_python面向对象之类属性和类方法的使用和实例
类属性和类方法 目标 类的结构类属性和实例属性类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 1. 使用面相对象开发,第 1 步 是设计 类 2. 使用 类名() 创建对象,创建对象 的 ...
- python属性使用教程_Python对象的属性访问过程详解
只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...
- python查看类的属性和方法_python—类的属性和方法总结
一.类的属性总结(类的属性定义在方法外,对象的属性定义在方法内) 理解: 类的(静态)属性:(人类的五官,理解为变量) 类的(动态)方法:(人类吃穿住行,理解为一个函数,至少带一个参数self,指向类 ...
- python私有属性怎么定义_Python中私有属性的定义方式
Python没有类似于Java的private关键字, 但也可以为类定义私有属性. 只需将属性命名变为以__开头, 例如 __field. 示例代码: class Vector2D(object): ...
- python对大量数据去重_Python对多属性的重复数据去重实例
python中的pandas模块中对重复数据去重步骤: 1)利用DataFrame中的duplicated方法返回一个布尔型的Series,显示各行是否有重复行,没有重复行显示为FALSE,有重复行显 ...
- python的实例属性和静态属性表_Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法...
类属性可以直接在方法中赋值,但 一.调用该属性时,必须先调用该方法: 二.与 init 方法区别是,init方法只初始化一次,初始化完成后作为全局变量.在方法中赋值属性,每次调用该方法,该属性初始化一 ...
- python中type(12.34)_Python typing.TYPE_CHECKING属性代码示例
本文整理汇总了Python中typing.TYPE_CHECKING属性的典型用法代码示例.如果您正苦于以下问题:Python typing.TYPE_CHECKING属性的具体用法?Python t ...
- python的类属性和方法_Python 类的属性和方法
本文介绍Python类中的属性和方法.和大部分语言类似,Python中的属性和方法也公有(public)和私有(private) 的区分. 一.类的公有和私有属性: 在Python中一般定义的属性为公 ...
- python之穿越火线游戏代码_Python win32con.CF_UNICODETEXT属性代码示例
# 需要导入模块: import win32con [as 别名] # 或者: from win32con import CF_UNICODETEXT [as 别名] def TestText(): ...
最新文章
- iOS 最新发布App Store流程
- 【HTTP】之HTTP 错误 401.3 - 访问被资源 ACL 拒绝
- [Leedcode][第十题][剑指offer]面试题第[19]题[正则表达式][动态规划][递归][JAVA]
- 华为交换机telnet和ftp服务开启/关闭命令
- Django中@login_required用法简介
- python竖着输出_Python中三种格式化输出的方式
- linux ftell函数(用于得到文件位置指针当前位置相对于文件首的偏移字节数)计算文件的字节大小
- SQL Server2008安装详细教程
- 小米6连接WIFI后无法联网,线刷教程
- 南科大副教授“跳槽”到深圳中学引热议!大学老师不香了吗?
- 故障诊断——奇异值分解法hankel矩阵
- 【云原生 | Docker 基础篇】03、Docker 阿里云镜像加速器
- BUUCTF 从娃娃抓起
- ini文件全部写入时换行符号未写入的问题处理
- Python练习题1.变量类型练习 华氏温度转摄氏温度 圆面积周长计算 判断闰年
- python27和python36 共存时安装pip方法,解决python27文件夹下没有script文件方法
- 图论基础 —— 概述
- 建筑承包模式EPC与PEC
- 最新封神总结!蚂蚁金服 + 滴滴 + 美团 + 拼多多 + 腾讯 55 万字 Java 中高级面试题,这还不拿捏大厂面试?拿高薪!!
- python气象处理第三弹-绘制气象站点分布
热门文章
- java方法体逻辑不会写怎么办,想自己写框架?不会写Java注解可不行
- 将两个有序链表合并,合并后仍然有序
- spring boot 开发 提交form表单出错
- bzoj 1010: [HNOI2008]玩具装箱toy 2011-12-27
- SharePoint 2013/2010 中的日历重合 (Calendars Overlay)
- 直线矩阵数学之路(2)-四大神器-R(18)
- C#解析XML各种方法特点比较(转载)
- ubuntu amd 64bit 安装 QQ for linux教程(附 不能使用中文的解决办法)
- ADO.NET中异步处理的方式
- UA MATH565C 随机微分方程V 无穷小生成算子