[STAThread]
static void Main(string[] args)
{
const int n = 2;
for (int i = 0; i < n; ++i)
{
AppDomain appDomain = AppDomain.CreateDomain("AppDomain");
AppDomainWrapper application = appDomain.CreateInstanceAndUnwrap(typeof(AppDomainWrapper).Assembly.FullName, typeof(AppDomainWrapper).FullName) as AppDomainWrapper;
application.openUI();
AppDomain.Unload(appDomain);
}
}
我需要在上述类中将静态变量(即class Applicant:
applicant_id_count=1000
application_dict={
"A":0,
"B":0,
"C":0
}
def __init__(self,applicant_name):
self.__applicant_name=applicant_name
self.__applicant_id=None
self.__job_band=None
和application_dict
设为私有静态变量)。还是在python中有这样的事情?
答案 0 :(得分:1)
Python没有访问修饰符。如果要从实例或类外部访问实例(或类)变量,则始终可以这样做。
这表示存在使用下划线(_)的约定,大多数开发人员都遵循该约定来表示变量/方法是私有的。单个下划线是一种惯例,可以说这是一个私有变量,但实际上并不会更改访问权限。示例:
class Applicant:
_applicant_id_count = 1000
Applicant._applicant_id_count # equals to 1000
如果出于某些原因要模拟私有变量,则可以始终使用__
前缀。 Python会对变量名称进行修饰,以使它们不易不可见。示例:
class Applicant:
__applicant_id_count=1000
当有人尝试直接访问它时,您将收到以下错误:
Applicant.__applicant_id_count
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class Applicant has no attribute '__applicant_id_count'
有人可以破解他们的方法并使用如下变量:
Applicant._Applicant__applicant_id_count # prints out 1000
您可以在此处了解更多信息:https://www.geeksforgeeks.org/private-variables-python/
答案 1 :(得分:1)
在Python中,您始终可以访问所有变量。但是,对于此类和属性的命名存在约定。您可以使用PEP 8中的__
前缀(两个下划线)。 Python会对诸如__foo
之类的变量名称进行修饰,以使包含它们的类之外的代码不容易看到它们。另外,如果要使用受保护的变量范围,则可以使用_
前缀(一个下划线)。