• Python基础


    所有的这些是来自于Python中文社区的基础教程内容,也许我们并不需要掌握所有的语法知识就可以完成大部分的工作,但是作为兴趣或者你工作累了的时候,可以调节紧张的情绪。


    • Python的数据类型:

    Python的数据类型分为两种,一种是标准的数据类型,还有是复杂的,核心编程上称之为复杂的数据类型

    标准的数据类型:

    Integer  整型

    Boolean 布尔型

    Long integer 长整型

    Float 浮点型

    Complex 复数型

    String 字符串

    List 列表

    Tuple 元组

    Dictionary 字典

    其他的数据类型包括:

    Type型

    函数

    模块

    文件

    Null对象(None)


    • range的使用
    for j in range(20):
    	print("hello"+str(j))
    

     输出结果为:

    hello0
    hello1
    hello2
    hello3

    .......

    Python提供的循环技术有for循环和while循环方式:


    • Python中的class

    Python是面向对象的语言,和C++类似,关键字class后面紧跟一个类名:然后就是给该类定义的一些方法和属性。

    class IEtest:
            """this is a class example"""
            _version = 1.0,
            _author = 'ywc',
            def __init__(self):
                    print('init the class');
            def setVersion(self,version):
                    self._version = version;
                    #return self._version;
            def setAuthor(self,author):
                    self._author = author;
                    #return self._author;
            def getVersion(self):
                    print(self._version);
            def getAuthor(self):
                    print(self._author);
    
    if __name__ == "__main__":
            ie = IEtest();
            
    

    如图所示:需要注意的几个地方:

    (1)我们一般将_##这样的变量定义为类的私有变量,这是命名习惯问题;

    (2)def__init__(self):类似于类的构造函数,每定义一个对象的时候都会自动调用该函数。需要注意的是我们必须在__init__()中添加参数。否则会报错!

      英文原文为:

    • The first method __init__() is a special method, which is called class constructor or initialization method that Python calls when you create a new instance of this class.

    (3)self类似于对象的this指针。

    (4)The class has a documentation string, which can be accessed via ClassName.__doc__.

          这句话的意思是__doc__是一个内建函数,通过这个函数,我们可以得到代码中关于三引号内的文档说明;

    类有四个比较重要的函数可以操作属性:

    • The getattr(obj, name[, default]) : to access the attribute of object.

    • The hasattr(obj,name) : to check if an attribute exists or not.

    • The setattr(obj,name,value) : to set an attribute. If attribute does not exist, then it would be created.

    • The delattr(obj, name) : to delete an attribute.

    分别可以得到/判断/设置/删除对象的某个属性

    if __name__ == "__main__":
            ie = IEtest();
            print(hasattr(ie,'_version'))#true
            print(hasattr(ie,'setVersion'))#true
            print(hasattr(ie,'setVersion()'))#false
    

    注意,我们判断属性的时候不需要写成第三种情况,因此我们才得到一个false的结果。我们还可以通过查看函数dir来实现查看对象所具有的属性和方法:

    >>> dir(ie)
    ['__doc__', '__init__', '__module__', '_author', '_version', 'getAuthor', 'getVersion', 'setAuthor', 'setVersion']
    

    Every Python class keeps following built-in attributes and they can be accessed using dot operator like any other attribute:

    • __dict__ : Dictionary containing the class's namespace.

    • __doc__ : Class documentation string or None if undefined.

    • __name__: Class name.

    • __module__: Module name in which the class is defined. This attribute is "__main__" in interactive mode.

    • __bases__ : A possibly empty tuple containing the base classes, in the order of their occurrence in the base class list

    每一个Python类都有下面四个内建函数。__doc__我们已经很熟悉。__module__我们后面将会介绍。

    对象的销毁:

    a = 40      # Create object <40>
    b = a       # Increase ref. count  of <40> 
    c = [b]     # Increase ref. count  of <40> 
    
    del a       # Decrease ref. count  of <40>
    b = 100     # Decrease ref. count  of <40> 
    c[0] = -1   # Decrease ref. count  of <40> 
    

    首先将40这个对象赋值给变量a以后,40这个对象的计数器就加1.  然后把a的值赋给b,此时,a和b指向相同的对象


    • Python的继承
    class IEtest:
            """this is a class example"""
            _version = 1.0,
            _author = 'ywc',
            def __init__(self):
                    print('init the class');
            def setVersion(self,version):
                    self._version = version;
                    #return self._version;
            def setAuthor(self,author):
                    self._author = author;
                    #return self._author;
            def getVersion(self):
                    print(self._version);
            def getAuthor(self):
                    print(self._author);
    class Inherent(IEtest):
            """this is inherend from the parent"""
            def __init__(self):
                    print("the parent method is called");
            
    
    if __name__ == "__main__":
            ie = IEtest();
            print(hasattr(ie,'_version'))#true
            print(hasattr(ie,'setVersion()'))
    
            print('-----------------------');
            inherent = Inherent();
            print(inherent._version);
    

      输出结果:

    >>> 
    init the class
    True
    False
    -----------------------
    the parent method is called
    (1.0,)
    

     继承的语法为:

    关键字class  类名 (继承的对象)


    验证一下继承后子类的参数情况:

    ['__doc__', '__init__', '__module__', '_author', '_version', 'getAuthor', 'getVersion', 'setAuthor', 'setVersion']
    ['__doc__', '__init__', '__module__', '_author', '_version', 'getAuthor', 'getVersion', 'setAuthor', 'setVersion']
    

    第一行是父类的方法和属性,第二行是派生类的方法和属性


    • Python的重载

    You can always override your parent class methods. One reason for overriding parent's methods is because you may want special or different functionality in your subclass.

    class IEtest:
            """this is a class example"""
            _version = 1.0,
            _author = 'ywc',
            def __init__(self):
                    print('init the class');
            def setVersion(self,version):
                    self._version = version;
                    #return self._version;
            def setAuthor(self,author):
                    self._author = author;
                    #return self._author;
            def getVersion(self):
                    print(self._version);
            def getAuthor(self):
                    print(self._author);
            def commonMethod(self):
                    print("the parent method is called in this Python");
    class Inherent(IEtest):
            """this is inherend from the parent"""
            def __init__(self):
                    print("the parent method is called");
            def commonMethod(self):
                    print("the child method is called in this python")
            
    
    if __name__ == "__main__":
            ie = IEtest();
            print(hasattr(ie,'_version'))#true
            print(hasattr(ie,'setVersion()'))
    
            print('-----------------------');
            inherent = Inherent();
            print(inherent._version);
            print(dir(inherent))
            print(dir(ie))
    
            print('-----------------------');
            ie.commonMethod();
            inherent.commonMethod();
    

      输出结果:

    the parent method is called in this Python
    the child method is called in this python
    

      问题是当派生类中定义了父类的方法commonMethod后,怎样调用父类的该方法?

            print("How we call the parent methid?
    
            from the last etc we can see that we can use the
    
            the parent obj to call. Now we conside how to call
    
            the parent obj using the child obj
    ")
            
            print("----Method1----")
            IEtest.commonMethod(inherent);
            print("----Method2----")
            super(Inherent).commonMethod();#important
    

      在上面我们提出了两种解决办法。关键是第二个。就是应用从Java中演变来的super关键字。需要注意的是:

    super() can be used only in the new-style classes, which means the root class needs to inherit from the 'object' class.
    
    For example, the top class need to be like this:
    
    class SomeClass(object):
        def __init__(self):
            ....
    not
    
    class SomeClass():
        def __init__(self):
            ....
    So, the solution is that call the parent's init method directly, like this way:
    
    class TextParser(HTMLParser):
        def __init__(self):
            HTMLParser.__init__(self)
            self.all_data = []
    

      

  • 相关阅读:
    Oracle面试题目及解答
    java -jar Incompatible argument to function
    plsql 查询到别的用户下面的表
    redis数据类型[string 、list 、 set 、sorted set 、hash]
    redis-cli 常用命令
    js判断浏览器,包括Edge浏览器
    HTMl5的sessionStorage和localStorage
    JS实现密码加密
    sprintf.js
    js-crc32
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/3774979.html
Copyright © 2020-2023  润新知