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. C#多线程编程实战(二)

    1.1 简介 为了防止一个应用程序控制CPU而导致其他应用程序和操作系统本身永远被挂起这一可能情况,操作系统不得不使用某种方式将物理计算分割为一些虚拟的进程,并给予每个执行程序一定量的计算能力.此外操 ...

  2. 用户不在sudoers文件中,此事将被报告

    在给Virtual Box搭配共享文件夹后,普通用户使用sudo时,报错XX不在sudoers文件中.此事将被报告 然后我就按照网上教程,不巧的是正好用错误的教程修改了sudoers文件,造成root ...

  3. sql语句(一)— —判断是否有这条数据的优化

    今天发现一个业务上的存储过程写的不够完善,和老板反应后,老板说你来完善吧,我:苦瓜脸~.说实话,我对SQL语句的熟练程度真的是不提也罢[捂脸],大概的判断流程我知道,但是真的让我自己写,还真得上网查查 ...

  4. Yahoo Programming Contest 2019.D.Ears(DP)

    题目链接 菜爆了啊QAQ 记起点为\(S\),终点为\(T\),走过的最靠左的点是\(L\),最靠右的点是\(R\). 那么坐标轴被分成了五段: \(0\sim L-1\):经过\(0\)次: \(L ...

  5. LeetCode(867)

    title: LeetCode(867) tags: Python Algorithm 题目描述 给定一个矩阵 A, 返回 A 的转置矩阵. 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索 ...

  6. OpenCV3.2.0+VS2017环境配置与常见问题(巨细坑爹版)

    目录 安装 常见问题 题外话:首先,配环境一定要有耐心... 本博客是本小白第一次装OpenCV成功后第一时间整理发布.用的是刚下载好的OpenCV3.2.0版,用x64编译器Debug运行(当然Re ...

  7. linux使用Anaconda管理多个版本的Python环境

    1.下载(直接到清华镜像下载) 下载链接,选择合适的版本,我试了几个,选择了一个下载最快的,原谅我的渣渣网速, 官网在国外,必须找镜像,不然很慢很慢,,,,,, 此步骤真的很慢,重新选择下载网址,这个 ...

  8. JavaScript关于函数对象的一些学习总结

    1.概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在Javascrip ...

  9. Java 读取 txt 文件内容到容器 List

    方法一: 一.桌面上准备 DataObject.txt 文件,内容为: 二.打开 Eclipse,编写代码如下: import java.io.BufferedReader; import java. ...

  10. Python 之 __new__() 方法与实例化(转)

    _new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在 Python 中存在于类里面的构造方法 __init__() 负责将类的实例化,而在 __init__() ...