[问题] 为什么有些写法会在前面或后面加底线

楼主: zcyee (散落吧)   2017-10-27 15:20:54
像是
def _init_(self,data.file)
def _factorize(self,data)
或是
self.dataframe[k], _ = pd.factorize(self.dataframe[k])
看很多范例都有。 不太了解什么意思
谢谢各位解答
作者: m87dd05 (八八里阿巴)   2017-10-27 15:35:00
最近也在研究python 的继承,我的理解是双底线不可被继承
作者: mikapauli (桜花)   2017-10-27 17:37:00
前面加单底线的名称不会被from ... import * 汇入楼上说的class里前面加双底线的名称会被改名前后都加双底线的命名有内建名称的意义单独的单底线idle里默认为上个运算的结果,有时会被用作dummy。我是习惯用双底线后单底线是有些人遇到命名冲突又想不到其他名称时用的
作者: darkgerm (黑骏)   2017-10-27 23:31:00
双底线不是不能被继承,而是继承后名字会被改掉防止撞名用的,这个机制叫 name mangling
作者: TitanEric (泰坦)   2017-10-28 00:19:00
可以搜寻dunder 还有你第二个例子不属于推文讨论的 只是function单纯回传2个值 但第二个对你来说不重要 所以才用底线
作者: brightwish (密码同帐号)   2017-10-28 02:17:00
有底线的就相当于c的private python 会自动防止错误的呼叫 另外前后都有底线则是类别内建的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com