我越来越多地使用Python,并且我一直__all__
在不同的__init__.py
文件中看到变量集.有人可以解释这是做什么的吗?
这似乎发生了很多,并且想知道这是否是Python语言中的要求,还是仅仅是常规问题?
此外,有人可以命名并解释哪些功能倾向于具有下划线,以及为什么(__init__
例如)?
许多C++代码使用语法约定来标记成员变量.常见的例子包括
其他人尝试在使用成员变量时强制使用this-> member.
根据我的经验,大多数较大的代码库都无法一致地应用这些规则.
在其他语言中,这些惯例远没有那么普遍.我只偶尔在Java或C#代码中看到它.我想我从未在Ruby或Python代码中看到它.因此,似乎有一种趋势,即更多现代语言不对成员变量使用特殊标记.
这个约定今天在C++中是否仍然有用,或者它只是一个时代错误.特别是因为它在库之间使用不一致.没有其他语言显示没有成员前缀可以做到吗?
有人很好地向我解释__method()破坏但是由于有很多其他人需要帮助而没有进一步打扰他,我想知道是否有人可以进一步详细说明差异.
例如,我不需要修改但是保持私有所以有人不能做instance._method()?或者它是否只是通过使其独一无二来覆盖另一个变量?我不需要我的内部方法"隐藏",但由于它们是特定的使用我不希望它们在课外使用.
任何人都可以修改namedtuple或提供替代类,以便它适用于可变对象吗?
主要是为了可读性,我想要类似于namedtuple这样做:
from Camelot import namedgroup
Point = namedgroup('Point', ['x', 'y'])
p = Point(0, 0)
p.x = 10
>>> p
Point(x=10, y=0)
>>> p.x *= 10
Point(x=100, y=0)
Run Code Online (Sandbox Code Playgroud)
必须可以腌制生成的对象.并且根据命名元组的特征,当表示时,输出的排序必须与构造对象时参数列表的顺序相匹配.
我正在编写一个由两部分组成的小型Python模块:
起初,我决定通过使用它在函数内部定义它来"隐藏"这个实现类,但这妨碍了可读性,如果多个函数重用同一个类,则不能使用它.
那么,除了评论和文档字符串之外,是否有一种机制将类标记为"私有"或"内部"?我知道下划线机制,但据我所知它只适用于变量,函数和方法名称.
让我们说df
是一个熊猫DataFrame.我想找到所有数字类型的列.就像是:
isNumeric = is_numeric(df)
Run Code Online (Sandbox Code Playgroud) 在Django中,我可以这样做:
test = Test.objects.get(id=1)
test.name
Run Code Online (Sandbox Code Playgroud)
我希望能够使用动态生成的字符串访问属性,如下所示:
test['name']
Run Code Online (Sandbox Code Playgroud)
或者,使用字符串的任何其他语法.我试过了
test._meta.get_field_by_name('name')
Run Code Online (Sandbox Code Playgroud)
但这会返回字段本身而不是值.
有任何想法吗?
对于Python中的私有成员和方法,我应该使用_foo(下划线)或__bar(双下划线)?
如何在Python中将方法和数据成员设为私有?或者Python不支持私有成员?
python ×8
c++ ×1
class ×1
coding-style ×1
django ×1
function ×1
methods ×1
mutable ×1
namedtuple ×1
namespaces ×1
oop ×1
pandas ×1
private ×1
syntax ×1
types ×1