• python下划线(_)含义


    序号(后面举例用) 类型 举例 作用说明
    1 前单下划线 _var

    ★★

     命名约定为私有属性、方法,但不会强制执行(报错),只是作为提示.

     经常用于property语法中.

    2 后单下划线 var_

     避免与关键字冲突,又让变量名具有可读性.

     举例:加入想用type = "ok" ,但type是关键字,这时候就用type_ = "ok",增加了变量但可读性,又不与关键字冲突.

    3 双前下划线 __var

    ★★★

     双下划线的变量、方法不能直接被实例调用(网上很多把这当私有化使用)

     用来避免子类覆盖其内容(如果不理解,请看下面的示例代码).

    4 双前和双后下划线 __var__

    ★★★

     1. 这是python的魔法,不要去调用这些变量和方法.

     举例:__init__  __len__  __new__,调用方式 len(var) 

     2. 或者你重写这些内置方法(如果不理解,请看下面的示例代码).

     建议: 尽量避免用此方法命名自己的变量和方法,免得和将来python的内置方法冲突.

    5 单下划线 _

     临时变量,接收值后抛弃(功能和go的单下划线一样).

    序号3的示例代码:

     1 # 序号3的代码示例
     2 # 此时类A 和 类B 都写了__method方法,但因为用了双下划线,虽然B重写了方法,但没有生效。这就是双下划线的作用;
     3 class A(object):
     4     def __method(self):
     5         print("I'm a method in A")
     6     def method(self):
     7         self.__method()
     8 
     9 class B(A):
    10     def __method(self):
    11         print("I'm a method in B")
    12 
    13 if __name__ == "__main__":
    14     a = A()
    15     a.method()
    16     b = B()
    17     b.method()
    18 # 执行结果:
    19 '''
    20 I'm a method in A
    21 I'm a method in A
    22 '''
    23 
    24 
    25 # 虽然上面写了__的一个示例,但下面但代码也很特别,请看下
    26 class A(object):
    27     def __method(self):
    28         print("I'm a method in A")
    29     def method(self):
    30         self.__method()
    31 
    32 class B(A):
    33     def __method(self):
    34         print("I'm a method in B")
    35     def method(self):
    36         self.__method()
    37 
    38 if __name__ == "__main__":
    39     a = A()
    40     a.method()
    41     b = B()
    42     b.method()
    43 # 执行结果:
    44 '''
    45 I'm a method in A
    46 I'm a method in B
    47 '''
    View Code

     序号4的示例代码:

     1 # 序号4的代码示例
     2 # 重写__var__的方法
     3 class CrazyNumber(object):
     4     def __init__(self, n):
     5         self.n = n
     6     def __add__(self, other):
     7         return self.n + other
     8     def __sub__(self, other):
     9         return self.n - other
    10     def __str__(self):
    11         return str(self.n)
    12 
    13 if __name__ == "__main__":
    14     num = CrazyNumber(10)
    15     print(num)       # 10
    16     print(num + 5)   # 15
    17     print(num - 20)  # -10
    View Code
    1 class Person(object):
    2     def __init__(self):
    3         self.__name = "wang"
    4         self.__age__ = 30
    5 
    6 if __name__ == "__main__":
    7     p = Person()
    8     print(p.__name)   # 报错
    9     print(p.__age__)  # 30
    View Code
  • 相关阅读:
    【面试题总结】第三篇
    Django 多账号登录
    Zabbix3.2 监控搭建
    2017.09.24校内训练
    2017.09.06校内训练
    tyvj P1001 第K极值
    洛谷P1020导弹拦截
    洛谷P1006传纸条
    2017.09.10校内训练
    hdu_1086 You can Solve a Geometry Problem too
  • 原文地址:https://www.cnblogs.com/wangsl1204/p/12701006.html
Copyright © 2020-2023  润新知