小编sya*_*yam的帖子

在python类中更新了对象的属性,但没有得到反映

考虑我的简单课程

class stud():
    def __init__(self,a,b):
        self.name=a
        self.mark=b
        self.message=self.name + ' ' +str(self.mark)

s1=stud('student1',40)
print s1.message  --->output=student1 40 
s1.name='student2'
print s1.message ----> output =student1 40 , but i expected student2 40
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么当我打印self.message [在修改对象的name属性后],它打印旧的值?我知道init方法在对象创建期间只调用一次,name属性在那时设置为值'student1'.但是,我正在改变下一行,再次打印self.message不应该列出新值?

为什么这个self.message没有更新修改后的值?

python oop

4
推荐指数
2
解决办法
343
查看次数

在Python中使用序列匹配器查找最长公共字符串

我试图difflib.SequenceMatcher在Python中使用返回最大的公共字符串

string1="""ERROR agave_util.py:64 Timed out waiting for HA alert generated CRITICAL ha_test_util.py:44 HA alert generated, Stack:File "/main/qa/py/qa/agave/nutanix_test_runner_worker.py", line 909, in <module>    main(FLAGS, sync_state)  File "/main/qa/py/qa/agave/nutanix_test_runner_worker.py", line 878, in main    worker.run(sync_state)  File "/main/qa/py/qa/agave/nutanix_test_runner_worker.py", line 326, in run    if not self.__test_phase_wrapper(test_method):  File "/main/qa/py/qa/agave/nutanix_test_runner_worker.py", line 502, in __test_phase_wrapper    func()  File "/main/qa/test/agave/acropolis_tests/ha/best_effort_power_off_test.py", line 87, in test_stargate_master_power_off    self._host_power_off_test_cycle(host_of_stargate_master)  File "/main/qa/test/agave/acropolis_tests/ha/best_effort_power_off_test.py", line 27, in _host_power_off_test_cycle    self.ha_util.power_off_and_check_ha(host)  File "/main/.python/qa/util/agave_tools/ha_test_util.py", line 469, in power_off_and_check_ha    self.wait_for_ha_alert(cutoff_usecs=latest_alert_start, **kwargs)  File "/main/.python/qa/util/agave_tools/ha_test_util.py", line 418, in wait_for_ha_alert    interval=interval,  File "/main/.python/qa/util/agave_tools/ha_test_util.py", line …
Run Code Online (Sandbox Code Playgroud)

python sequence

3
推荐指数
1
解决办法
1720
查看次数

嵌套循环中的python list comprehension

列表理解中的一个基本问题是我开始这样做,

列表理解可以返回两个数组吗?

就像我试图将我的代码转换为列表理解

b=[10,2,3]
c=[10,11,12]
d=[]
f=[]
a=10
for i in b:
    if a>i:
        for j in c:
            d.append(j)

print d
Run Code Online (Sandbox Code Playgroud)

我可以使用list comprehension将上面的代码转换为

print [j  for i in b if a>i  for j in c ]
Run Code Online (Sandbox Code Playgroud)

但现在我想在我的初始代码中添加一个额外的块,看起来像

b=[10,2,3]
c=[10,11,12]
d=[]
f=[]
a=10
for i in b:
        if a>i:
            for j in c:
                d.append(j)
        else:
          f.append(i)
print d
print f

d=[10, 11, 12, 10, 11, 12]
f=[10]
Run Code Online (Sandbox Code Playgroud)

有什么方法可以将这个额外的东西添加到我的初始列表理解中吗?

python list-comprehension

3
推荐指数
1
解决办法
1035
查看次数

python词典理解方法中的单行if else

我刚试过这样的列表理解

[i if i==0 else i+100for i in range(0,3)]
Run Code Online (Sandbox Code Playgroud)

它工作,但当我尝试类似的字典理解时,它会抛出一个错误:

d={3:3}
{d[i]:0 if i==3 else d[i]:True for i in range(0,4) }
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?我怎样才能使用dict理解if else

这会产生错误:

    {d[i]:0 if i==3 else d[i]:True for i in range(0,4) }
                             ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

注意:我在这里使用的示例只是一个随机的,而不是我的实际代码.我可以用替代解决方案来做到这一点,但我现在只是在研究dict理解.

python list-comprehension dictionary-comprehension

1
推荐指数
2
解决办法
1576
查看次数

如何在Python中创建不同的变量名称

如何创建不同的变量名称?

就像我在循环中迭代一样,比如从 0 到 100。

我需要在每次迭代中创建不同的变量并为其分配一些值。一个例子

for i in range(0,100):
   'var'+i=i
Run Code Online (Sandbox Code Playgroud)

似乎无效。我想在每次迭代中创建变量,例如 var0、var1 等,并且应该能够使用该名称访问它。有人能给我建议一个解决方案吗

python

1
推荐指数
1
解决办法
7302
查看次数

父类init在继承期间执行

OOP中的一个基本问题.

test.py 文件内容:

class test(object):
    def __init__(self):
        print 'INIT of test class'
obj=test()
Run Code Online (Sandbox Code Playgroud)

然后我打开了另一个文件.

我刚刚继承了上面的测试类:

from test import  test
class test1(test):
    def __init__(self):
        pass
Run Code Online (Sandbox Code Playgroud)

所以当我运行这个类时,父类的init正在执行.

我读到我可以通过使用来避免它

if __name__='__main__'
Run Code Online (Sandbox Code Playgroud)

我可以解决这个问题,但我的问题是为什么父类的init正在执行,因为我只是在我的第二个文件中导入这个类,对象创建代码是如何执行的?

python oop python-2.x

0
推荐指数
1
解决办法
26
查看次数