zoukankan      html  css  js  c++  java
  • 一些知识点

    ------------------- 

    python 

    -------------------

    【新手使用】python可视化网页:http://www.pythontutor.com/visualize.html#mode=display

    (1) range为何是左闭右开区间

    1. 上下界之差等于元素的数量
    2. 方便表示两个相邻子序列,一个子序列的上界就是另一个子序列的下界,[1,2),[2,5)
    3. 序列从零(最小自然数)开始计数时,下界的下标不是 -1(非自然数)
    4. 表达空集时,不会使得上界小于下界

    (2)字典合并 dictMerged = dict( dict1, **dict2 )

    (3)实例属性和类属性

        self表示一个具体的实例本身。如果用了staticmethod,那么就可以无视这个self,将这个方法当成一个普通的函数使用。

        cls表示这个类本身

    由于Python是动态语言,根据类创建的实例可以任意绑定属性。

    给实例绑定属性的方法是通过实例变量,或者通过self变量:

    class Student(object):
        def __init__(self, name):
            self.name = name
    
    s = Student('Bob')
    s.score = 90
    

    但是,如果Student类本身需要绑定一个属性呢?可以直接在class中定义属性,这种属性是类属性,归Student类所有:

    class Student(object):
        name = 'Student'
    

    当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到。来测试一下:

    >>> class Student(object):
    ...     name = 'Student'
    ...
    >>> s = Student() # 创建实例s
    >>> print(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性
    Student
    >>> print(Student.name) # 打印类的name属性
    Student
    >>> s.name = 'Michael' # 给实例绑定name属性
    >>> print(s.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性
    Michael
    >>> print(Student.name) # 但是类属性并未消失,用Student.name仍然可以访问
    Student
    >>> del s.name # 如果删除实例的name属性
    >>> print(s.name) # 再次调用s.name,由于实例的name属性没有找到,类的name属性就显示出来了
    Student
    

    从上面的例子可以看出,在编写程序的时候,千万不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。

     
     
     
     
     
     
     
     
  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/qtnt/p/11625573.html
Copyright © 2011-2022 走看看