python中self、_init_和__name__
来源:互联网 发布:300英雄淘宝四周年 编辑:程序博客网 时间:2024/05/20 18:55
初学python,记录一些基本的东西吧
1、self
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。Python中的self等价于C++中的self指针和Java、C#中的this。
假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。
这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。
声明add()方法时,若不加self,则提示
TypeError: add() takes exactly 2 arguments (3 given)
File "D:\PythonWorkplace\PythonDemo\Tet.py", line 15, in <module> test.add(1,3) 错误。
2、_init_
首先来看init单词本身,其含义是 初始化。而__init__的含义,也如同其单词本意一样,用来初始化。当一个Class,稍微复杂一点的时候,或者内部函数需要用得到的时候,往往都需要在,别人实例化你这个类之前,使用你这个类之前,做一些基本的,与自己的类有关的,初始化方面的工作。而这部分工作,往往就放到__init__函数中去了。
3、__name__
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用.
模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。
在cmd 中直接运行.py文件,则__name__的值是'__main__';
而在import 一个.py文件后,__name__的值就不是'__main__'了;
从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件
如:
#Test.py
class Test:
def __init(self):pass
def f(self):print 'Hello, World!'
if __name__ == '__main__':
Test().f()
#End
你在cmd中输入:
C:>python Test.py
Hello, World!
说明:"__name__ == '__main__'"是成立的
你再在cmd中输入:
C:>python
>>>import Test
>>>Test.__name__ #Test模块的__name__
'Test'
>>>__name__ #当前程序的__name__
'__main__'
无论怎样,Test.py中的"__name__ == '__main__'"都不会成立的!
所以,下一行代码永远不会运行到!
- python中self、_init_和__name__
- [python]对self和_init_的理解
- python类class中_init_函数以及参数self的简单解释
- python中_init_文件说明
- python中__name__和callback
- python中模块名字和__name__属性
- 【整理】python 中 self, init, __ ,if __name__ == '__main__'
- python中__name__解析
- python中self和cls
- Python __name__ 和 __main__
- 【Python语法】python中__name__
- python中关于__name__和__main__的理解
- 关于python中__name__和__main__的问题
- python中 __name__ 的解析
- python中__name__的解析
- python中__name__的使用
- Python中__name__="__main__"
- python之__name__和__main__
- Linux-(8)查找文件
- 【hadoop zookeeper】Zookeeper开源客户端框架Curator简介
- 移动端原型设计利器-UIDesigner 3.0架构设计总结
- Jsoup-HTML解析
- 《剑指Offer》面试题16:反转链表
- python中self、_init_和__name__
- Android ViewGroup中事件触发和传递机制
- PPT转为PDF怎样转换比较好
- GDB调试程序一(概述)
- dede 内容页分页
- 字节长度转换
- android中scrollview与listview共存
- 二叉搜索树的后序遍历序列
- Android平台上读写NFC标签 原理