我在类中看到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)
答案 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部分。