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艰难之路第21页,我看到这个代码示例:
x = "There are %d types of people." % 10
...
print "I said: %r." % x
Run Code Online (Sandbox Code Playgroud)
为什么%r在这里使用而不是%s?你何时使用%r,何时使用%s?
我有一个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,所以我不能使用它.
我想在JavaScript中替换所有出现的空格字符(空格,制表符,换行符).
怎么办?
我试过了:
str.replace(/ /gi, "X")
Run Code Online (Sandbox Code Playgroud) 我正在编写一些带有文件名的代码,打开文件并解析出一些数据.我想在课堂上这样做.以下代码有效:
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) 是否可以在不进入插入模式的情况下在光标处于Vim的位置插入换行符?这是一个例子([x]意味着光标打开x):
if (some_condition) {[ ]return; }
Run Code Online (Sandbox Code Playgroud)
偶尔,我可能想要输入更多代码.所以我按下i进入插入模式,按下Enter以插入换行符,然后删除额外的空格.接下来,我进入正常模式并将光标定位在右大括号之前,然后执行相同的操作以将其放在自己的行上.
我已经这样做了一段时间,但肯定有更好的方法吗?
我想获得一个只有分阶段文件名的列表.我找不到--name-only该git status命令的等效标志.什么是好的选择?
文件列表将通过管道传递给php -l(PHP lint语法检查器).
解决方案:完整的命令
git diff --name-only --cached | xargs -l php -l
Run Code Online (Sandbox Code Playgroud) 我有一个目录,里面有一堆文件:eee2314,asd3442...和eph.
我想要排除所有eph以该glob函数开头的文件.
我该怎么做?
我正在使用xsd:all复杂的类型.当我错过任何强制性元素,同时验证它将显示所有元素.它不会显示确切的遗漏元素.
但如果我使用,xsd:sequence我可以得到确切的遗漏元素.
这两者有什么区别吗?
xsd:sequence:XML元素必须处于相同的顺序.
但是xsd:all:XML元素可以是任何顺序.
我在我的项目中尝试Spring数据JPA.我想知道是否有出的现成的API来查询数据,双方Sort和Pageable.当然,我知道我可以自己编写这个方法,我只是想知道是否有一个开箱即用的方法.我的DAO扩展了JpaRepository,我发现有以下方法可以调用:
findAll();
findAll(Pageable pageable);
findAll(Sort sort);
Run Code Online (Sandbox Code Playgroud)
但是没有这样的方法findAll(Sort sort, Pageable pageable),所以我很好奇.
python ×4
java ×2
arraylist ×1
class ×1
collections ×1
git ×1
git-status ×1
glob ×1
javascript ×1
jpa ×1
performance ×1
python-2.7 ×1
spring ×1
string ×1
text-editor ×1
trim ×1
vim ×1
xml ×1
xsd ×1