使用双下划线和单下划线的Python类

时间:2017-06-04 04:01:34

标签: python python-2.7

我在类中看到python类示例,很少有函数使用双下划线,很少有函数启动单下划线,对于某些函数,它们不使用下划线。

这只是为了区分代码吗?或者如果我们使用不同的方式,如双下划线或单下划线代码表现不同。

下面是我发现它有双下划线,单下划线且没有得分的脚本。

import paramiko
import socket

class NetappFiler:

    def __init__(self, host, username, password, port=22):
        # Create ssh client
        self.client=paramiko.SSHClient()
        self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.client.connect(host, port , username=username, password=password)


    def __del__(self):
        # Close ssh connection
        self.client.close()    


    def ssh_cmd(self, cmd):
        #print (cmd)
        stdin, stdout, stderr = self.client.exec_command(cmd)
        stdin.close()
        stdout = stdout.readlines()
        return stdout

    def _ssh_yes_cmd(self, cmd):
        #print (cmd)
        stdin, stdout, stderr = self.client.exec_command(cmd)
        stdin.write('y\n')
        stdin.flush()
        stdin.close()
        stdout = stdout.readlines()
        return stdout

    def _create_volume(self, vserver, vol_name, vol_size, target_aggr):
        # Creates a thick volume
        cmd = ("vol create -vserver %s -volume %s -aggregate %s -size %s "
               "-state online -type RW -policy default -user 0 -group 1 "
               "-security-style unix -unix-permissions ---rwxrwxrwx "
               "-max-autosize 60GB -autosize-increment 2.50GB "
               "-min-autosize 50GB -autosize-mode grow -space-guarantee volume"
               %(vserver, vol_name, target_aggr, vol_size))
        self.ssh_cmd(cmd)

1 个答案:

答案 0 :(得分:0)

方法开头和结尾的两个下划线

当我们看到像__method__这样的方法时,它意味着它是python调用的方法。

例如,在您的代码中__init____del__就是这样一种方法。当您执行以下操作时。

obj = NetappFiler(arg1, arg2, arg3) # __init__ gets called
del obj # __del__ gets called

开头的单下划线

Python没有真正的私有方法,因此在方法或属性名称的开头有一个下划线表示它是该类的私有。

来自PEP-8

  

_single_leading_underscore:弱“内部使用”指标。例如。来自M import *不会导入名称以下划线开头的对象。

要了解详情,请阅读文档中的Descriptive: Naming Styles部分。