我有哪些信息:主分支上的文件名(myfile.txt).上次使用提交"3"修改了文件,导致版本2.
我想要检索的内容:标签名称"0.0.2",其中包括自上一个标签"0.0.1"以来的提交"3"和"4".
(A)如何在2个标签之间获取更改的文件(参见此处):
git diff --name-only 0.0.1 0.0.2
Run Code Online (Sandbox Code Playgroud)
这会打印'myfile.txt'等.
(B)通常应该完全符合我的需要(见这里):
git describe --always `git log --pretty=format:%H -n 1 myfile.txt`
Run Code Online (Sandbox Code Playgroud)
但是我没有得到标签名称'0.0.2'或与此标签相关的提交.相反,我得到了提交3的提交SHA-1,其中包含myfile.txt的最新更改.
(C)如果以下命令打印相应的标记名称,则注释标记:
git for-each-ref --format='%(refname) %(objecttype)' refs/tags
Run Code Online (Sandbox Code Playgroud)
打印:
refs/tags/0.0.1 tag
refs/tags/0.0.2 tag
refs/tags/0.0.3 tag
refs/tags/0.0.4 tag
Run Code Online (Sandbox Code Playgroud)
题
所以我的问题是:(B)对我来说是正确的方式吗?如果是,我如何更改它确实获得所需的标签名称?还是有另一种方式而不是(B)得到我需要的东西?
我有一个自己的类,派生自 BaseHTTPRequestHandler,它实现了我的特定 GET 方法。这工作得很好:
from http.server import BaseHTTPRequestHandler, HTTPServer
class MyHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
""" my implementation of the GET method """
myServer = HTTPServer(("127.0.0.1", 8099), MyHTTPRequestHandler)
myServer.handle_request()
Run Code Online (Sandbox Code Playgroud)
但为什么我需要通过我的MyHTTPRequestHandler
课程HTTPServer
?我知道文档要求它:
类http.server.BaseHTTPRequestHandler(请求,客户端地址,服务器)
该类用于处理到达服务器的 HTTP 请求。它本身无法响应任何实际的 HTTP 请求;必须对其进行子类化以处理每个请求方法(例如 GET 或 POST)。BaseHTTPRequestHandler 提供了许多类和实例变量以及供子类使用的方法。
处理程序将解析请求和标头,然后调用特定于请求类型的方法。方法名称是根据请求构造的。例如,对于请求方法 SPAM,将不带参数调用 do_SPAM() 方法。所有相关信息都存储在处理程序的实例变量中。子类不应该需要重写或扩展init () 方法。
但我确实想传递我的子类的实例化对象。我不明白为什么要这样设计,对我来说这看起来像是设计失败。具有多态性的面向对象编程的目的是我可以子类化以使用相同的接口实现特定的行为,所以在我看来这是一个不必要的限制。
这就是我想要的:
from http.server import BaseHTTPRequestHandler, HTTPServer
class MyHTTPRequestHandler(BaseHTTPRequestHandler):
def __init__(self, myAdditionalArg):
self.myArg = myAdditionalArg
def do_GET(self):
""" my implementation of the GET method """
self.wfile(bytes(self.myArg, "utf-8")) …
Run Code Online (Sandbox Code Playgroud) 所以我有一个以下问题.我有一个类,它是另外两个类的子类,它们都有位置.就像在这个例子中:
struct A
{
float x, y;
std::string name;
void move(float x, float y)
{
this->x += x;
this->y += y;
}
};
struct B
{
float x, y;
int rows, columns;
void move(float x, float y)
{
this->x += x;
this->y += y;
}
};
struct C : public A, public B
{
void move(float x, float y)
{
this->x += x; //generates error: "C::x is ambiguous
this->y += y; //generates error: "C::y is ambiguous
}
};
Run Code Online (Sandbox Code Playgroud)
在代码的后面,我将C类称为A类和B类,当我得到这个位置时,我遇到了问题.我可以以某种方式"组合"两个类的位置变量吗?如果没有,我可以同时更改两个类的位置,或者我必须这样做:
void …
Run Code Online (Sandbox Code Playgroud)