是否有 C 和 Python 相当于 Java 的 public 和私有的?
Is there a C and Python equivalent of Java's public and private?
我发现在我学过的很多语言中都包含关键字public
和private
,我还发现Lua等同于private
是local
这让我想到 C 和 Python.
中是否也有等价物
那么在 C 和 Python 中是否存在 Java 的 public
和 private
的实际等价物?
在 python 中,您可以通过在成员名称前加上双下划线(双下划线)来声明私有成员,如下所示:
class Sample:
def __init__(self):
self.__private_mem = "Can be accessed only by member functions"
self.public_mem = "Can be accessed as object properties outside the class"
sample = Sample()
print(sample.public_mem)
print(sample.__private_mem) # will raise an Error
但是,我猜 C 语言中没有这样的东西,因为它不是面向对象的。
Python 中保护字段和私有字段有一个命名约定:
一个下划线前缀表示受保护,两个下划线表示私有。但这并没有真正强制执行。更多细节在这里:
https://www.tutorialsteacher.com/python/private-and-protected-access-modifiers-in-python
所有不以一两个下划线为前缀的都是 public。
在 C 中,可以从其他源文件中的函数访问全局变量和函数,除非它们被声明 static
。和private
不完全一样,但是C不是object-oriented所以这里不存在class的概念。
我发现在我学过的很多语言中都包含关键字public
和private
,我还发现Lua等同于private
是local
这让我想到 C 和 Python.
那么在 C 和 Python 中是否存在 Java 的 public
和 private
的实际等价物?
在 python 中,您可以通过在成员名称前加上双下划线(双下划线)来声明私有成员,如下所示:
class Sample:
def __init__(self):
self.__private_mem = "Can be accessed only by member functions"
self.public_mem = "Can be accessed as object properties outside the class"
sample = Sample()
print(sample.public_mem)
print(sample.__private_mem) # will raise an Error
但是,我猜 C 语言中没有这样的东西,因为它不是面向对象的。
Python 中保护字段和私有字段有一个命名约定: 一个下划线前缀表示受保护,两个下划线表示私有。但这并没有真正强制执行。更多细节在这里: https://www.tutorialsteacher.com/python/private-and-protected-access-modifiers-in-python
所有不以一两个下划线为前缀的都是 public。
在 C 中,可以从其他源文件中的函数访问全局变量和函数,除非它们被声明 static
。和private
不完全一样,但是C不是object-oriented所以这里不存在class的概念。