小编Ste*_*ker的帖子

为什么Python的"私有"方法实际上不是私有的?

Python使我们能够通过在名称前加上双下划线来在类中创建"私有"方法和变量,如下所示:__myPrivateMethod().那么,如何解释这一点呢

>>> class MyClass:
...     def myPublicMethod(self):
...             print 'public method'
...     def __myPrivateMethod(self):
...             print 'this is private!!'
... 
>>> obj = MyClass()
>>> obj.myPublicMethod()
public method
>>> obj.__myPrivateMethod()
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: MyClass instance has no attribute '__myPrivateMethod'
>>> dir(obj)
['_MyClass__myPrivateMethod', '__doc__', '__module__', 'myPublicMethod']
>>> obj._MyClass__myPrivateMethod()
this is private!!
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?!

我会对那些没有那么做的人解释一下.

>>> class MyClass:
...     def myPublicMethod(self):
...             print 'public method'
...     def __myPrivateMethod(self):
...             print 'this is private!!'
... 
>>> obj = MyClass()
Run Code Online (Sandbox Code Playgroud)

我在那里做的是使用公共方法和私有方法创建一个类并实例化它.

接下来,我称之为公共方法.

>>> obj.myPublicMethod() …
Run Code Online (Sandbox Code Playgroud)

python encapsulation information-hiding python-2.7

632
推荐指数
11
解决办法
41万
查看次数

何时在Python中使用%r而不是%s?

学习Python艰难之路第21页,我看到这个代码示例:

x = "There are %d types of people." % 10
...
print "I said: %r." % x
Run Code Online (Sandbox Code Playgroud)

为什么%r在这里使用而不是%s?你何时使用%r,何时使用%s

python string string-formatting

160
推荐指数
4
解决办法
13万
查看次数

如何计算List中元素的出现次数

我有一个ArrayListJava的Collection类,如下所示:

ArrayList<String> animals = new ArrayList<String>();
animals.add("bat");
animals.add("owl");
animals.add("bat");
animals.add("bat");
Run Code Online (Sandbox Code Playgroud)

如您所见,它animals ArrayList由3个bat元素和一个owl元素组成.我想知道Collection框架中是否有任何API返回bat出现次数或是否有另一种方法来确定出现次数.

我发现Google的Collection Multiset确实有一个API,可以返回元素的总出现次数.但这只与JDK 1.5兼容.我们的产品目前是JDK 1.6,所以我不能使用它.

java collections arraylist

159
推荐指数
14
解决办法
29万
查看次数

替换所有空格字符

我想在JavaScript中替换所有出现的空格字符(空格,制表符,换行符).
怎么办?

我试过了:

str.replace(/ /gi, "X")
Run Code Online (Sandbox Code Playgroud)

javascript trim

117
推荐指数
6
解决办法
17万
查看次数

在__init__中调用类函数

我正在编写一些带有文件名的代码,打开文件并解析出一些数据.我想在课堂上这样做.以下代码有效:

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None

        def parse_file():
            #do some parsing
            self.stat1 = result_from_parse1
            self.stat2 = result_from_parse2
            self.stat3 = result_from_parse3
            self.stat4 = result_from_parse4
            self.stat5 = result_from_parse5

        parse_file()
Run Code Online (Sandbox Code Playgroud)

但它涉及我将所有解析机制放在__init__我的类的函数范围内.对于这个简化的代码,现在看起来很好,但是该函数parse_file也有很多级别的缩进.我更喜欢将函数定义parse_file()为类函数,如下所示:

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some …
Run Code Online (Sandbox Code Playgroud)

python class

110
推荐指数
3
解决办法
12万
查看次数

如何在Vim中插入光标而不进入插入模式的换行符?

是否可以在不进入插入模式的情况下在光标处于Vim的位置插入换行符?这是一个例子([x]意味着光标打开x):

if (some_condition) {[ ]return; }
Run Code Online (Sandbox Code Playgroud)

偶尔,我可能想要输入更多代码.所以我按下i进入插入模式,按下Enter以插入换行符,然后删除额外的空格.接下来,我进入正常模式并将光标定位在右大括号之前,然后执行相同的操作以将其放在自己的行上.

我已经这样做了一段时间,但肯定有更好的方法吗?

vim performance text-editor

76
推荐指数
4
解决办法
3万
查看次数

如何让git status只显示暂存文件

我想获得一个只有分阶段文件名的列表.我找不到--name-onlygit status命令的等效标志.什么是好的选择?

文件列表将通过管道传递给php -l(PHP lint语法检查器).

解决方案:完整的命令

git diff --name-only --cached | xargs -l php -l
Run Code Online (Sandbox Code Playgroud)

git git-status

73
推荐指数
4
解决办法
3万
查看次数

glob排除模式

我有一个目录,里面有一堆文件:eee2314,asd3442...和eph.

我想要排除所有eph以该glob函数开头的文件.

我该怎么做?

python glob

73
推荐指数
6
解决办法
6万
查看次数

架构定义中<xsd:all>和<xsd:sequence>之间的区别?

我正在使用xsd:all复杂的类型.当我错过任何强制性元素,同时验证它将显示所有元素.它不会显示确切的遗漏元素.

但如果我使用,xsd:sequence我可以得到确切的遗漏元素.

这两者有什么区别吗?

xsd:sequence:XML元素必须处于相同的顺序.

但是xsd:all:XML元素可以是任何顺序.

xml xsd xml-validation xsd-validation

72
推荐指数
3
解决办法
8万
查看次数

如何通过Sort和Pageable使用Spring数据JPA开箱即用地查询数据?

我在我的项目中尝试Spring数据JPA.我想知道是否有出的现成的API来查询数据,双方SortPageable.当然,我知道我可以自己编写这个方法,我只是想知道是否有一个开箱即用的方法.我的DAO扩展了JpaRepository,我发现有以下方法可以调用:

findAll();
findAll(Pageable pageable);
findAll(Sort sort);
Run Code Online (Sandbox Code Playgroud)

但是没有这样的方法findAll(Sort sort, Pageable pageable),所以我很好奇.

java spring jpa spring-data-jpa

70
推荐指数
2
解决办法
10万
查看次数