python中self原理实例分析

   本文实例讲述了python中self原理。分享给大家供大家参考。具体分析如下:

  类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

  假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法 MyObject.method(arg1, arg2) 的时候,这会由Python自动转为 MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。

  这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

  示例程序:

  ?

1
2
3
4
5
6
7
8
9

>>> class P:
... def selfDemo(self):
... print 'Python, why self?'
...
...
>>> p = P()
>>> p.selfDemo()
Python, why self?
>>>

  将selfDemo()中参数换为其他,如selfDemo(x),输出同样结果。

  若不加参数,则报错:

  ?

1
2
3
4
5
6
7
8
9
10
11

>>> class P:
... def selfDemo(): # have no arguments
... print 'Python, why self?'
...
...
>>> p = P()
>>> p.selfDemo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: selfDemo() takes no arguments (1 given)
>>>

  希望本文所述对大家的Python程序设计有所帮助。

时间: 2016-04-30

python中self原理实例分析的相关文章

python中as用法实例分析

  这篇文章主要介绍了python中as用法,实例分析了as的功能及相关使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中as用法.分享给大家供大家参考.具体分析如下: ? 1 import some # some 为一个模组 如果想要改变被导入模组在当前模组中的名称,而不是sys.modules中的名称.可以使用import as,例如: ? 1 2 import some as other print(other.name) 和 ? 1 2 3 4 import

python中global用法实例分析

  本文实例讲述了python中global用法.分享给大家供大家参考.具体分析如下: 1.global---将变量定义为全局变量.可以通过定义为全局变量,实现在函数内部改变变量值. 2.一个global语句可以同时定义多个变量,如 global x, y, z 示例程序: ? 1 2 3 4 5 6 7 8 9 10 >>> def func(): ... global x ... print 'x is ', x ... x = 2 ... print 'Change local x

Java中递归原理实例分析_java

本文实例分析了Java中递归原理.分享给大家供大家参考.具体分析如下: 解释:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合.  递归的三个

Python中replace方法实例分析_python

本文以实例形式讲述了Python中replace方法,很有实用价值,具体如下: replace方法主要有两种: last_date = "1/2/3" 目标为"123" 方法一:repalce date =last_date.replace('/','') 方法二:re p = re.compile("/") date = p.sub('', last_date) 需要注意的是:一定不要转义,否则函数不会生效. replace 方法返回根据正则表

python常见数制转换实例分析

  这篇文章主要介绍了python常见数制转换,实例分析了二进制.八进制.十进制及十六进制之间的相互转换技巧,需要的朋友可以参考下 1.进位制度 Python中二进制是以0b开头的: 例如: 0b11 则表示十进制的3 8进制是以0开头的: 例如: 011则表示十进制的9 16进制是以0x开头的: 例如: 0x11则表示十进制的17 或者写成 x b 2.各种函数转换 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

C#中矩阵运算方法实例分析

  C#中矩阵运算方法实例分析         这篇文章主要介绍了C#中矩阵运算方法,实例分析了通过C#实现矩阵的初始化.转置矩阵.求逆矩阵等各种常用的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#中矩阵运算方法.分享给大家供大家参考.具体分析如下: 一.测试环境: 主机:XP 开发环境:VS2008 二.功能: 在C#中实现矩阵运算 三.源代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Javascript中innerHTML用法实例分析

 这篇文章主要介绍了Javascript中innerHTML用法,实例分析了实用innerHTML获取对应元素内容的使用技巧,需要的朋友可以参考下     本文实例讲述了Javascript中innerHTML用法.分享给大家供大家参考. 具体实现方法如下:   代码如下: <html> <head> <script type="text/javascript"> function t(){ var cont = document.getElemen

jQuery中animate用法实例分析

 这篇文章主要介绍了jQuery中animate用法,实例分析了animate的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jQuery中animate用法.分享给大家供大家参考.具体如下: 这是一个简单的animate函数尝试.代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <script type="text/javascript"> $(document).ready

jQuery中noConflict()用法实例分析

 这篇文章主要介绍了jQuery中noConflict()用法,实例分析了noConflict()的功能.定义及相关使用技巧,需要的朋友可以参考下     本文实例讲述了jQuery中noConflict()用法.分享给大家供大家参考.具体分析如下: jQuery默认使用"$"操作符,$ 符号只是 window.jQuery 对象的一个引用,jQuery.noConflict() ,这个函数将变量$的控制权让渡给第一个实现它的那个库.这有助于确保jQuery不会与其他库的$对象发生冲突