我正在经历一种模糊的(对我来说)的范围界定的效果,并试图为其制定规则:
#!/usr/bin/env python3
stuff = "the things"
__MORE_STUFF = "even more"
class Thing:
def __init__(self):
global __MORE_STUFF # doesn't help
print(stuff) # is OK
print(__MORE_STUFF) # fail!
Thing()
结果:
$ python3 dun
当我应用两个下划线时,我得到了错误AttributeError: 'Organization' object has no attribute '__employees',这是代码。
class Organization(object):
__employees=[]
google=Organization()
google.__employees.append('Erik')
Python不实现私有变量概念。如果是这样的话,我就会犯错。如果删除一个下划线代码,执行时不会出错。
我在python中尝试了NVI(非虚拟接口)习惯用法,并注意到私有(双下划线)方法似乎并不是虚拟的。
class A(object):
def a(self):
print "in A.a"
self.b()
self.__b()
self._b()
def _b(self):
print "in A._b"
def __b(self):
print "in A.__b"
def b(self):
print "in A.b"
class B(A):
这是我在Python中尝试做的事情:
class BaseClass:
def __init__(self):
print 'The base class constructor ran!'
self.__test = 42
class ChildClass(BaseClass):
def __init__(self):
print 'The child class constructor ran!'
BaseClass.__init__(self)
def doSom
我正在尝试理解类属性__value和下面python类中的值之间的区别。
class WithClass ():
def __init__(self, val = "Bob"):
self.__value = val
def my_func(self):
print(self.value)
a = WithClass()
print(a.__value)
b = WithClass("Sally")
print(b.__value))
上面的代码给出了错误"AttributeError: WithClass
从中我们知道,函数名称中的单个前导下划线是“内部使用”指示符,这意味着该函数仅供内部使用,并且可能被某些import忽略。
最近,我开始从事一个项目,在这个项目中,我发现许多地方在两个版本中定义了类方法,并以这样的方式使用(例如):
class Proxy:
def get_services(self):
# Do something
return self._get_services()
def _get_services(self):
# Do something more
我被告知,这是为了告诉其他程序员,Proxy对象方
我使用的是第三方Python库(wxPython),它的一个模块中有一个buggy类。
有问题的代码部分如下所示:
def OnText(self, event):
value = self.GetValue()
if value != self.__oldvalue:
pass # Here some more code follows ...
self.__oldvalue = value
问题在于if语句,因为在第一次调用该方法时,self.__oldvalue尚未初始化。因此,在这个bug被库开发人员修复之前,我想我可以用一个小小的解决方案来解
假设我有一个类A
class A {
public:
A();
void fetch_data() { return 1; }
void write_x_data() {
// lock this instance of A
private_function1_which_assumes_locked();
private_function2_which_assumes_locked();
// unlock this instance of A
}
void write_y_data() {
// lock t
我正在用Python编写一个银行应用程序,并从这里读取的一些源代码。balance类定义如下:
class Balance(object):
""" the balance class includes the balance operations """
def __init__(self):
""" instantiate the class """
self.total = 0
def add(self, value):