下划线说明

头尾双下划线

例如__init__(),定义的是特殊方法,一般是系统定义名字

双下划线

以双下划线开头的变量为类的私有变量(private),只允许这个类本身访问,例如__var

单下划线

以单下划线开头的变量为保护类型的变量(protected),只允许这个类和其子类访问

Python不允许实例化对象访问类的私有数据,但是可以利用object._className__attr来访问属性,例如:

>>> class MyClass():

__var=10

>>> c=MyClass()

>>> c.__var

Traceback (most recent call last):

File "", line 1, in

c.__var

AttributeError: 'MyClass' object has no attribute '__var'

>>> c._MyClass__var

10

>>>

内置类属性

__dict__ : 类的属性(包含一个字典,由类的数据属性组成)

__doc__ :类的文档字符串

__name__: 类名

__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)

__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

>>> class MyClass():

'这是类的文档'

publicVar=10

def __init__(self,varA,varB):

self.varA='aa'

self.varB='bb'

def displayVar(self):

print('varA =',self.varA)

print('varB =',self.varB)

print('publicVar=',MyClass.publicVar)

>>> MyClass.__doc__ # 类的文档字符串

'这是类的文档'

>>> MyClass.__name__ # 类名

'MyClass'

>>> MyClass.__module__ # 类定义所在的模块

'__main__'

>>> MyClass.__bases__ # 类的父类,默认所有类继承自object类

(,)

>>> MyClass.__dict__ # 类的属性,返回一个字典

mappingproxy({'__module__': '__main__', '__doc__': '这是类的文档', 'publicVar': 10, '__init__': , 'displayVar': , '__dict__': , '__weakref__': })

>>>

基本重载方法

可以在自己的类中重写方法

方法名

描述

__init__(self[,args..])

构造函数

__del__(self)

析构函数

__repr__(self)

转化为供解释器读取的形式

__str__(self)

将值转化为适于人阅读的形式

__cmp__ (self,x)

对象比较

__getitem__(self,n)

通过下标访问

__call__(self)

直接对实例进行调用

__iter__(self)

返回可迭代对象

class Fib(object):

def __getitem__(self, n):

if isinstance(n, int): # n是索引

a, b = 1, 1

for x in range(n):

a, b = b, a + b

return a

if isinstance(n, slice): # n是切片

start = n.start

stop = n.stop

if start is None:

start = 0

a, b = 1, 1

L = []

for x in range(stop):

if x >= start:

L.append(a)

a, b = b, a + b

return L

>>> f=Fib()

>>> f[0]

1

>>> f[1]

1

>>> f[2]

2

>>> f[1:5]

[1, 2, 3, 5]

>>> f[:10]

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

>>>

>>> class Fib(object):

def __init__(self):

self.a, self.b = 0, 1 # 初始化两个计数器a,b

def __iter__(self):

return self # 实例本身就是迭代对象,故返回自己

def __next__(self):

self.a, self.b = self.b, self.a + self.b # 计算下一个值

if self.a > 100000: # 退出循环的条件

raise StopIteration()

return self.a # 返回下一个值

>>> for n in Fib():

print(n)

1

1

2

3

5

8

13

21

34

55

89

144

233

377

610

987

1597

2584

4181

6765

10946

17711

28657

46368

75025

>>>

对象销毁机制

Python 使用了引用计数这一简单技术来跟踪和回收垃圾,当一个对象没有被引用时就会被自动释放,但是释放并不是立即的,而是解释器在合适的时机将垃圾对象的内存回收。

>>> class MyClass():

def __del__(self):

print('delete this object')

def __init__(self):

print('init this object')

>>> c= MyClass() # 引用为1

init this object

>>> b=c # 引用为2

>>> d=b # 引用为3

>>> del c # 引用为2

>>> del b # 引用为1

>>> del d # 引用为0 准备释放内存

delete this object

>>>

利用内置函数访问属性

可以使用以下函数的方式来访问属性:

getattr(obj, name[, default]) : 访问对象的属性。

hasattr(obj,name) : 检查是否存在一个属性。

setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一-个新属性。

delattr(obj, name) : 删除属性。

hasattr(emp1, 'age') # 如果存在 'age' 属性返回 True。

getattr(emp1, 'age') # 返回 'age' 属性的值

setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8

delattr(emp1, 'age') # 删除属性 'age'

# 属性名记得加单引号,否则会认为是一个与属性名同名的变量

>>> class MyObject(object):

def __init__(self):

self.x = 9

def power(self):

return self.x * self.x

>>> obj=MyObject()

>>> hasattr(obj,'x')# 是否有属性x

True

>>> obj.x

9

>>> hasattr(obj,'y')# 是否有属性y

False

>>> setattr(obj,'y',10)# 设置属性y=10

>>> hasattr(obj,'y')# 是否有属性y

True

>>> getattr(obj,'y')# 获取属性y

10

>>> obj.y

10

>>> getattr(obj,'z')# 若不存在对应属性且缺省为None,直接获取属性会报错

Traceback (most recent call last):

File "", line 1, in

getattr(obj,'z')

AttributeError: 'MyObject' object has no attribute 'z'

>>> getattr(obj,'z',404)# 若不存在属性z,则将其设为404

404

>>> hasattr(obj,'power')

True

>>> func=getattr(obj,'power')# 获取方法

>>> type(func)# func类型为方法

>>> func()

81

>>>

python基本语法总结-Python基本语法总结(二)相关推荐

  1. python使用正则表达式验证邮箱地址语法有效性

    python使用正则表达式验证邮箱地址语法有效性 #python使用正则表达式验证邮箱地址语法有效性 import re # mail regular expression formula# rege ...

  2. python语法书籍推荐_python语法的书

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 四大基本语法分别从变量命名规则.缩进原则.特殊关键字和特殊运算符四个方面,总结 ...

  3. python语法错误概述_python语法错误

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我是python中的新手,当我想在模块中编译代码时,我遇到语法错误:invail ...

  4. python基本语法语句-python 语法基础篇 一

    安装篇 编辑篇: 编辑python 一 : 在终端环境下输入python命令,回车键运行.这种方式称为 交互方式. 1️⃣ 打开终端: 2️⃣ 输入python 回车 3️⃣ 输入python 语法 ...

  5. python语法手册-python语法手册

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 常用的也不超过十个,这种相对于更为复杂的html标记语言来说,markdown可谓 ...

  6. python基本语法语句-Python基本语句

    一.Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非 ...

  7. python基本语法语句-python基本语句有哪些

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发.下面我们就为 ...

  8. python语法大全-总结了Python中的22个基本语法

    01 Python的优点 Python是一种类似人类讲话的语言 极其简单易学的语言 也是开源的语言之一 可移植性良好,在各大平台都可以运行,比如Windows.Mac.Linux上都可运行 丰富的第三 ...

  9. python菜鸟基础教程-python基础菜鸟教程,Python的基础语法

    原标题:python基础菜鸟教程,Python的基础语法 什么是Python?Python是一门简单直观的编程语言,并且目前是开源的,可以方便任何人使用. Python的开发哲学:用一种方法,最好是只 ...

  10. python中语法错误-python冒号语法错误python中如何创建字典

    python字典定义 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ...

最新文章

  1. python __init__ (初始化对象时候自动调用) 与代表class对象自身的self
  2. 利用iptables来配置linux禁止所有端口登陆和开放指定端口
  3. java程序有连接数据库_Java程序连接数据库
  4. DNS入门介绍之三BIND安装配置全过程
  5. (56)zabbix Screens视图配置
  6. jooq代码生成_将jOOQ与Spring结合使用:代码生成
  7. 线程池 调度 java_java调度器和线程池总结
  8. Fragment生命周期及其使用
  9. 电脑用户名_学会这一招,再也不用担心电脑的运行速度慢了
  10. jquery的DOM节点操作(创建和插入元素节点)
  11. 拿下宝马中国量产订单的四维图新,如何在自动驾驶地图领域内外兼修?
  12. 《肖申克的救赎》--[美]斯蒂芬·金
  13. spring事件监听器系列二:@EventListener注解原理
  14. iOS商户进件之【营业执照编号校验】18位社会信用代码验证 unified social credit identifier
  15. matlab lbp特征,lbp特征(lbp纹理特征提取)
  16. 打卡赠书,新一年的读者福利 !
  17. C#开启路由器upnp功能
  18. c语言编程矩阵鞍点函数,c语言 任意输入一个3×3的矩阵,用函数实现求上三角矩阵并输出。...
  19. 基于office三件套的一次性权限维持
  20. python数据分析:新闻文本聚类

热门文章

  1. 摆脱阅读黑洞,退订RSS
  2. 关于Synchronized研伸扩展
  3. windows查看端口占用的进程和杀死进程
  4. SQL的多种JOIN
  5. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
  6. [短彩信]C#短彩信模块开发设计(1)——架构
  7. 编程语言python入门要电脑什么配置能带动-Python是万能的编程语言吗?这五大用途很重要!...
  8. python3.6安装教程-python3.6环境安装+pip环境配置教程图文详解
  9. python课程价格哪个好-python课程价格
  10. python菜鸟教程官网绘图-NumPy Matplotlib