可能重复:
Super可以处理多重继承吗?
Python继承?我有一个类结构(下面),并希望子类调用__init__父双方.这可能是以"超级"方式做的还是只是一个可怕的想法?
class Parent1(object):
def __init__(self):
self.var1 = 1
class Parent2(object):
def _init__(self):
self.var2 = 2
class Child(Parent1, Parent2):
def __init__(self):
## call __init__ of Parent1
## call __init__ of Parent2
## super(Child, self).__init__()
Run Code Online (Sandbox Code Playgroud) 在下面做一个单行的方式吗?
myDict = {}
if 'key' in myDic:
del myDic['key']
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试创建一个继承自python列表的类.我希望列表的每个循环初始化/最终确定列表的元素.我认为这可以通过覆盖__iter__python列表的方法来完成,但我似乎无法让它工作.该__iter__方法似乎只调用一次?(见下文)
class MyList(list):
def __iter__(self):
print 'do something'
return list.__iter__(self)
my_list = MyList(range(10))
print my_list
for item in my_list:
print item
Run Code Online (Sandbox Code Playgroud)
产量
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
do something
0
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)
知道如何实现我想做的事吗?
我试图将一些Python类转换为c ++但是遇到了一些麻烦.我有一个Base类,它有一个类(静态)变量和一个返回它的方法.我也有一个派生类,它会覆盖类(静态)变量,如此,
在Python中:
class Base:
class_var = "Base"
@classmethod
def printClassVar(cls):
print cls.class_var
class Derived(Base):
class_var = "Derived"
d = Derived()
d.printClassVar()
Run Code Online (Sandbox Code Playgroud)
它打印出所需的派生类变量"Derived".知道如何在c ++中获得相同的功能吗?我已经尝试但最终获得Base类的类变量.
在c ++中
class Base
{
public:
static void printStaticVar(){cout << s_var << endl;}
static string s_var;
};
string Base::s_var = "Base";
class Derived : public Base
{
public:
static string s_var;
};
string Derived::s_var = "Derived";
void main()
{
Derived d;
d.printStaticVar();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 django 测试框架编写测试,该测试产生了一个可以访问测试数据库的新后台进程。测试看起来像这样,
temp_project/temp_app/tests.py
import subprocess
from django.test import TestCase
from temp_app.models import TempModel
# Create your tests here.
class TempTest(TestCase):
def setUp(self):
TempModel.objects.create()
def test_main(self):
self.assertEqual(str(TempModel.objects.all()) + '\n',
subprocess.check_output(['python', 'manage.py', 'temp_command']))
Run Code Online (Sandbox Code Playgroud)
子进程简单地打印出数据库的内容,temp_project/temp_app/management/commands/temp_command.py
from temp_app.models import TempModel
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, *args, **kwargs):
print TempModel.objects.all()
Run Code Online (Sandbox Code Playgroud)
模型是一个空的占位符,temp_project/temp_app/models.py
from django.db import models
# Create your models here.
class TempModel(models.Model):
pass
Run Code Online (Sandbox Code Playgroud)
但是测试的输出看起来像,
> python manage.py test
Creating test database for alias 'default'...
F
======================================================================
FAIL: …Run Code Online (Sandbox Code Playgroud) 我有一个递归函数存在于一个名为 test_module
import requests
def send_msg(msg, retries=0):
try:
# send the message here, e.g. a http request
response = requests.get("http://www.doesnotexist98734.com")
# if url does not exist raise an exception
except Exception as e:
if retries == 0:
raise e
else:
return send_msg(msg, retries=retries-1)
Run Code Online (Sandbox Code Playgroud)
我的问题是如何编写一个单元测试来检查send_msg当我设置 retries = n 时函数被调用了 n 次。我正在玩模拟模块(我使用的是 python 2.7),我想我想要这样的东西,
import mock, unittest
class MyUnitTest(unittest.TestCase):
@mock.patch('test_module.send_msg')
def test_send_msg_tries_n_times(self, mock_send_msg):
with self.assertRaises(Exception):
mock_send_msg("hello", retries=3)
self.assertEqual(mock_send_msg.call_count, 4) # initial call + 3 retries
Run Code Online (Sandbox Code Playgroud)
但是,由于我已经模拟了该函数,因此它不会调用真正的函数,因此我不会收到异常,也不会递归地调用自己...
python ×5
c++ ×1
del ×1
dictionary ×1
django ×1
inheritance ×1
init ×1
iterator ×1
loops ×1
mocking ×1
python-2.6 ×1
recursion ×1
super ×1
unit-testing ×1