1.  

python中if __name__ == '__main__': 的解析

经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用.

模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。

在cmd 中直接运行.py文件,则__name__的值是'__main__';

而在import 一个.py文件后,__name__的值就不是'__main__'了;

从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件

[python] view plain copy
  1. #Test.py  
  2. class Test:  
  3.     def __init(self):pass  
  4.     def f(self):print 'Hello, World!'  
  5. if __name__ == '__main__':  
  6.     Test().f()  
  7. #End  
  8. 你在cmd中输入:  
  9. C:>Python Test.py  
  10. Hello, World!  
  11. 说明:"__name__ == '__main__'"是成立的  
[python] view plain copy
  1. 你再在cmd中输入:  
  2.   
  3. C:>python  
  4.   
  5. >>>import Test  
  6.   
  7. >>>Test.__name__                #Test模块的__name__  
  8.   
  9. 'Test'  
  10.   
  11. >>>__name__                       #当前程序的__name__  
  12.   
  13. '__main__'  
  14.   
  15. 无论怎样,Test.py中的"__name__ == '__main__'"都不会成立的!  
  16.   
  17. 所以,下一行代码永远不会运行到!  

2. Python中的类

   
class <类名>:
     <语句>
      类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象
类的私有属性:
  __private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs
类的方法:
  在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
私有的类方法:
  __private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用slef.__private_methods
类的专有方法:
__init__  构造函数,在生成对象时调用
__del__   析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用

__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__称方

继承类定义:

[python] view plain copy
  1. #单继承示例    
  2.     class student(people):    
  3.         grade = ''    
  4.         def __init__(self,n,a,w,g):    
  5.             #调用父类的构函    
  6.             people.__init__(self,n,a,w)    
  7.             self.grade = g    
  8.         #覆写父类的方法    
  9.         def speak(self):    
  10.             print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade))         
  11.     s = student('ken',20,60,3)    
  12.     s.speak()  

类的多重继承

    需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法

[python] view plain copy
  1. #另一个类,多重继承之前的准备    
  2. class speaker():    
  3.     topic = ''    
  4.     name = ''    
  5.     def __init__(self,n,t):    
  6.         self.name = n    
  7.         self.topic = t    
  8.     def speak(self):    
  9.         print("I am %s,I am a speaker!My topic is %s"%(self.name,self.topic))    
  10.   
  11. #多重继承    
  12. class sample(speaker,student):    
  13.     a =''    
  14.     def __init__(self,n,a,w,g,t):    
  15.         student.__init__(self,n,a,w,g)    
  16.         speaker.__init__(self,n,t)    
  17.   
  18. test = sample("Tim",25,80,4,"Python")    
  19. test.speak()#方法名同,默认调用的是在括号中排前地父类的方法  

Python中的__name__和类的更多相关文章

  1. Python中的__name__

    python中if __name__ == '__main__': 的解析 经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且 ...

  2. Python中的__name__和__main__含义详解

    1背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main():     ......   if __name == "__m ...

  3. 非常易于理解‘类'与'对象’ 间 属性 引用关系,暨《Python 中的引用和类属性的初步理解》读后感

    关键字:名称,名称空间,引用,指针,指针类型的指针(即指向指针的指针) 我读完后的理解总结: 1. 我们知道,python中的变量的赋值操作,变量其实就是一个名称name,赋值就是将name引用到一个 ...

  4. python中如何统计一个类的实例化对象

    类中的静态变量 需要通过类名.静态变量名 来修改 :通过对象不能修改 python中如何统计一个类的实例化对象?? class Person: #静态变量count,用于记录类被实例化的次数 coun ...

  5. python 中if __name__ = '__main__' 的作用

    python 中if __name__ = '__main__' 的作用 前言 首先我们要知道在python里面万物皆对象,模块也是对象,并且所有的模块都有一个内置属性 __name__. 一个模块的 ...

  6. 对python中的__name__的理解

    一开始学习python的时候,不理解python中的__name__的用途,一致感觉__name__的返回结果就是__main__ 今天系统的看了一下,才理解过来,__name__真正的用处是用在使用 ...

  7. Python中if __name__=="__main__" 语句在调用多进程Process过程中的作用分析

    2018年2月27日 于创B515 引言 最近准备学习一下如何使用Python中的多进程.在翻看相关书籍.网上资料时发现所有代码都含有if __name__=="__main__" ...

  8. Python中if __name__ == '__main__',__init__和self 的解析

    1.2.1 一个.py文件被其他.py文件引用 假设我们有一个const.py文件,内容如下: 现在,我们写一个用于计算圆面积的area.py文件,area.py文件需要用到const.py文件中的P ...

  9. Python常见经典 python中if __name__ == '__main__': 的解析

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...

随机推荐

  1. git 将主分支的提交合并到分支上(主分支同步到分支)

    通常都会遇到将分支修改的内容合并到主分支中,但是在主分支中修改了内容怎么同步到分支上呢,这个时候需要将主分支上的提交操作在分支上再做一次: 1.首先在主分支上执行: git log 2.找到你想要同步 ...

  2. Halcon 常用算子使用场合

    Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训 ...

  3. 使用open live writer客户端写博客zz

    下载地址 http://openlivewriter.org/ 具体配置步骤 选择日志服务类型为"其它日志类型" 添加日志账户: 安装后的优化配置 获取博客园主题 安装完OLW(o ...

  4. BZOJ.3926.[ZJOI2015]诸神眷顾的幻想乡(广义后缀自动机)

    题目链接 要对多个串同时建立SAM,有两种方法: 1.将所有串拼起来,中间用分隔符隔开,插入字符正常插入即可. 2.在这些串的Trie上建SAM.实际上并不需要建Trie,还是只需要正常插入(因为本来 ...

  5. Some Conclusions.

    目录 DP 四边形不等式 数论 & 数学 数据结构 树链剖分 左偏树的性质及\(O(n)\)的构造 图论 树 二分图 竞赛图 平面图 双连通分量 字符串 后缀自动机 复杂度分析 没什么好写的. ...

  6. Java中的位运算符

    Java提供的位运算符有:左移( << ).右移( >> ) .无符号右移( >>> ) .位与( & ) .位或( | ).位非( ~ ).位异或( ...

  7. BZOJ4095 : [Usaco2013 Dec]The Bessie Shuffle

    首先将排列和整个序列以及询问都反过来,问题变成给定一个位置$x$,问它经过若干轮置换后会到达哪个位置. 每次置换之后窗口都会往右滑动一个,因此其实真实置换是$p[i]-1$. 对于每个询问,求出轮数, ...

  8. 改变下blog思维

    自言自语 总是希望我写出来的东西都是精品或者尽我的努力使其接近精品,所以写一个就会消耗不少时间. 但是进来实在太忙,就没办法写:以至于断更了一大段时间.所以从现在开始记录一些很简小的东西直到我又开始有 ...

  9. Java 将 List 里面的内容写入桌面的 txt 文档

    文件内容: /** * 将 list 写入文件中 */ import java.io.BufferedWriter; import java.io.File; import java.io.FileW ...

  10. hdu6024 Building Shops(区间dp)

    https://cn.vjudge.net/problem/HDU-6024 分开考虑某一点种与不种,最后取二者的最小值. dp[i][1] = min(dp[i-1][0], dp[i-1][1]) ...