这是针对这个问题的答案"使用python的abc模块来创建抽象类".(由@alexvassel作为答案接受).
我尝试了这些建议,但奇怪的是,尽管遵循了使用abc方式的建议,但它对我不起作用.因此我在这里将其作为一个问题发布:
这是我的Python代码:
from abc import ABCMeta, abstractmethod
class Abstract(object):
__metaclass__ = ABCMeta
@abstractmethod
def foo(self):
print("tst")
a = Abstract()
a.foo()
Run Code Online (Sandbox Code Playgroud)
当我执行这个模块时,这是我控制台上的输出:
pydev debugger: starting (pid: 20388)
tst
Run Code Online (Sandbox Code Playgroud)
而不是那个被接受的答案
>>> TypeError: Can not instantiate abstract class Abstract with abstract methods foo
Run Code Online (Sandbox Code Playgroud)
那我在做什么是对还是错?为什么工作而不是失败?感谢任何专家对此的见解.
python abstract-class python-2.x abstract-base-class python-3.x
我正在研究使用Windows Azure REST API在Windows Azure环境中创建虚拟机.查看Windows Azure REST API参考,我看到应该向其发出POST请求的URL是:
https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments/<deployment-name>/roles
Run Code Online (Sandbox Code Playgroud)
在这里,我的困惑是关于需要<cloudservice-name>和<deployment-name>.实际上,如果我直接登录到我的Windows Azure订阅门户并通过菜单创建虚拟机,我就不必指定cloudservice-name或deployment-name.我所做的就是为VM选择一个图像(centos,ubuntu,windows等),为VM选择一个风格(xsmall,small,large等)并单击"Create",几分钟后创建VM .
鉴于我可以通过这种方式创建VM,我无法理解为什么我必须在REST API curl调用中传递<cloudservice-name>一个<deployment-name>参数以及传递给这些参数的值.事实上,我的订阅中没有部署,也没有打算订阅.我想要的只是创建一个我可以使用的虚拟机.
我是否可以跳过这些参数,仍然可以在Azure订阅中创建虚拟机?即只是通过<subscription-id>?
以前使用Windows Azure REST API的人或者具有Windows Azure专业知识的人是否会对此有所了解并帮助澄清?
更新于2013年7月31日星期三:再次感谢您对我的问题的反馈.我想更新一下,我能够最终使用REST API调用创建虚拟机.但奇怪的是,创建虚拟机只能成功运行一次.随后,当我尝试使用不同的名称创建VM时,它出现了"暂存部署被阻止"之类的错误.因此,为了理智,我继续删除现有的VM并进行了一些帐户清理.我尝试了POST操作再次创建VM,现在发生的事情是POST响应回复正常,带有202 Accepted消息,但尽管如此,我还是看不到在我的Azure帐户中创建的VM.我不知道在哪里以及如何开始解决这个问题,因为我既没有收到错误,也没有创建VM.
我发布在我发布的用于创建VM的整个XML请求主体下面:
<Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Name>Staging</Name>
<DeploymentSlot>Staging</DeploymentSlot>
<Label>stk_curl_label_1</Label>
<RoleList>
<Role>
<RoleName>stk_curl_role_1</RoleName>
<RoleType>PersistentVMRole</RoleType>
<ConfigurationSets>
<ConfigurationSet>
<ConfigurationSetType>WindowsProvisioningConfiguration</ConfigurationSetType>
<ComputerName>stkVm1</ComputerName>
<AdminPassword>Password123</AdminPassword>
<EnableAutomaticUpdates>false</EnableAutomaticUpdates>
</ConfigurationSet>
</ConfigurationSets>
<OSVirtualHardDisk>
<HostCaching>ReadWrite</HostCaching>
<DiskLabel>Visual studio ultimate</DiskLabel>
<DiskName>stk_disk_1</DiskName>
<MediaLink>http://stk11.blob.core.windows.net/communityimages/visual_studio_ultimate.vhd</MediaLink>
<SourceImageName>03f55de797f546a1b29d1b8d66be687a__Visual-Studio-2013-Preview-Ultimate-12.0.20617.1</SourceImageName>
</OSVirtualHardDisk>
<RoleSize>ExtraSmall</RoleSize>
</Role>
</RoleList>
</Deployment>
Run Code Online (Sandbox Code Playgroud)
而且我正在接受我收到的卷曲电话响应的尾部:
> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: management.core.windows.net …Run Code Online (Sandbox Code Playgroud)