zoukankan      html  css  js  c++  java
  • 学学python(4):面向对象及类,模块

    1.       关于类的一些说明

    1.1.__init__是类的构造函数,和其他语言中的构造函数功能是一样的,python类中还有其他的特殊方法,比如析构函数为__del__,在方法名的前后都有双下划线。构造函数的返回值是None

    1.2.包括构造函数在内的所有方法至少要指定一个参数,该参数代表要调用其方法的类的对象,为self,相当于C#中的this关键字,如果有多个参数的话,self为第一个参数。每个方法都通过self参数来访问对象属性。

    下面是一个类定义及创建对象调用的例子:

    class Employe:

        """It is a class named Employe"""

        def __init__( self ):

          self.name = ""    

          self.age = 0

     

        def printInfo(self):

            print "name is %s,age is %s"%(self.name,self.age)

    调用如下:

    from Employe import Employe

     

    emp1=Employe()#create object of class Employe

    print "some info for emp1"

    print "name:",emp1.name

    print "age:",emp1.age

    print "showInfo:",emp1.printInfo()

     

    emp1.name="cary"

    emp1.age=27

    emp1.printInfo()

    结果如下:

    some info for emp1

    name:

    age: 0

    showInfo: name is ,age is 0

    None

    name is cary,age is 27

     

    1.3. 类和类的对象都有一些特殊属性是python为我们创建好的。包括如下:

    print Employe.__bases__

    print Employe.__dict__

    print Employe.__doc__

    print Employe.__module__

    print Employe.__name__

     

    print emp1.__class__

    print emp1.__dict__

    print emp1.__module__

    print emp1.__doc__

    1.4. 文档字符串是一种说明信息,可以对类和函数使用,但必须放在类,函数定义紧挨着的下一行,可以使用print Employe.__doc__来显示文档字符串。

    1.5. 私有属性:python在遇到双下划线开头的属性时会进行名字调整,例:

    class Test:

        def __init__(self):

            self.public=""

            self.__private=""

     

    test1=Test()

    print "public:",test1.public

    #print "private:",test1.__private

    print "private:",test1._Test__private

    上面程序中我们直接访问test1对象的__privatepython会提示该属性不存在,这是因为python对其进行了重命名,命名后为Test__private,我们访问这个名字就可以访问到该属性。

     

    2.       自定义字符串表示:__str__方法,该方法必须返回字符串,下面是例子:

    class Employe:

        """It is a class named Employe"""

        def __init__( self ):

          self.name = ""    

          self.age = 0

     

        def __str__(self):

            return "name is %s,age is %s"%(self.name,self.age)

     

        def printInfo(self):

            print "name is %s,age is %s"%(self.name,self.age)

     

    emp1=Employe()#create object of class Employe

    emp1.name="cary"

    emp1.age=29

    print emp1   

     

    当我们print 类的实例的时候,会调用对象的__str__方法

     

    3.       运算符重载:在使用python中运算符的时候都会调用一个python内部的特殊方法,比如使用减号(-)运算符的时候会调用__sub__特殊方法,所以重载减号运算符就变成了重写__sub__方法。其他运算符和特殊方法的对应可以查阅相关文档得到。下面是一个重载加法运算符的简单例子,如下:

    class NumTest:

        def __init__(self,num1):

            self.data=num1

        def __add__(self,num2):

            return self.data+num2

       

    num=NumTest(9)

    result=num + 6

    print result

     

    4. 模块是逻辑上组织代码的方法,文件是物理上组织模块的方法,因此一个文件被看做是一个独立模块,一个模块也可以看做是一个文件。

    5.警告框架:包括一些警告异常类的集合,Warning直接从Exception继承,作为所有警告的基类,有UserWarningDeprecationWarningSyntaxWarningRuntimeWarning.

    6.模块内建函数

    __import__():作为实际上导入模块的函数,即import语句调用__import__函数完成它的工作,如果有必要时我们可以自定义该函数。

    golbals()locals():分别返回调用者全局和局部名称空间的字典,在一个函数内部局部名称空间代表在函数执行时候定义的所有名字,locals函数返回就是包含这些名字的字典,globals返回函数可以访问的全局名字的字典。

    reload():可以重新导入一个已经导入的模块。

    7.包:有层次的文件目录结构。

     

    作者:生鱼片
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    https://scrapingclub.com/exercise/detail_sign/
    https://scrapingclub.com/exercise/basic_captcha/
    https://scrapingclub.com/exercise/basic_login/
    344. 反转字符串(简单)
    142. 环形链表 II(中等)
    面试题02.07.链表相交
    19. 删除链表的倒数第 N 个结点
    24.两两交换链表中的节点
    206.反转链表(简单)
    707.设计链表
  • 原文地址:https://www.cnblogs.com/carysun/p/python4.html
Copyright © 2011-2022 走看看