我有一堂课叫Letter
class Letter
{
init() {}
}
Run Code Online (Sandbox Code Playgroud)
我对这个类有一个扩展:
extension Letter
{
convenience init(file_path:String) {
self = Letter.loadFromFile(file_path)
}
class func loadFromFile(file_path:String)->Letter {...}
}
Run Code Online (Sandbox Code Playgroud)
我需要使用文件路径创建和初始化,当我调用时,Letter(file_path)我需要一个由 func 返回的新对象loadFromFile。如何在 init 方法中赋值或返回一个新对象?
它给出了错误:
无法赋值:“self”是不可变的
我正在尝试安装 Levenshtein 模块,如您在此处看到的。
我能够setup.py通过 运行该文件python setup.py build。
python然后,当我通过从终端立即进入 python 时,在与文件夹相同的文件夹中Levenshtein,我尝试导入它:
import Levenshtein,
但我收到以下错误:
>>> import Levenshtein
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "Levenshtein/__init__.py", line 1, in <module>
from Levenshtein import _levenshtein
ImportError: cannot import name _levenshtein
Run Code Online (Sandbox Code Playgroud)
并且,当我查看文件夹时Levenshtein,我看到两个与该名称相似的文件:
_levenshtein.c _levenshtein.h
Run Code Online (Sandbox Code Playgroud)
这个导入有什么意义,我应该如何获取名称为 的文件_levenshtein?
我是 Gitkraken 的新用户,有一个工作流程我无法从文档中轻易弄清楚:
创建本地很容易,但是“添加远程”给了我一个奇怪的错误消息,“不匹配”。我不太理解这个“添加远程”命令:它可以在远程站点上创建一个存储库,还是仅仅附加到必须已经存在的存储库?我通过浏览器创建它并在终端使用“git add remote”克服了这个错误,但这很笨拙,我想做得更好。
我还尝试通过使用 Gitkraken File > Init 命令并选中“同时克隆”复选框来执行此操作,但这给我带来了错误消息:“目录已存在且不为空。” 不,Gitkraken,你错了!我不想将新的(空)远程存储库克隆到本地,我想将新的本地存储库复制到其中。反向操作!
那么,为新纳入 Git 版本控制的项目创建本地和关联远程的最佳工作流程是什么?
我有一个 Spring boot 应用程序,当从命令行运行时,它可以完美地记录到文件系统(通过logging.level/logging.file属性):
java -jar jarfilename.jar
Run Code Online (Sandbox Code Playgroud)
但是,当我将以下内容放入 pom.xml 中以创建可执行 JAR,然后尝试将其作为 Ubuntu 中的 init 脚本运行时,日志记录根本不会发生。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
以下是我在 Linux 上运行的命令:
ln -s /path/to/executablejar.jar /etc/init.d/myapp
chmod a+x /etc/myapp
/etc/init.d/myapp start
Run Code Online (Sandbox Code Playgroud)
我想这一定是日志记录配置的某种问题,没有考虑可执行 jar 的启动方式,但我很困惑并且希望得到任何指导。
这是我在 application.properties 中的日志记录设置:
logging.level.org.springframework=error
logging.level.com.myapp=debug
logging.level.org.hibernate=error
logging.file=/path/to/a.log
Run Code Online (Sandbox Code Playgroud) 当我运行 python 的覆盖率时,我总是需要__init__.py在测试子目录中有一个空文件来获取运行测试的覆盖率。这是 python2 软件包的要求,但不是 python3 的要求。为了重现,我执行了以下操作(先决条件是 python3、pip3 和 brew):
运行以下终端命令:
pip3 install coverage
Run Code Online (Sandbox Code Playgroud)创建以下目录结构:
example\
example.py
tests\
test_example.py
Run Code Online (Sandbox Code Playgroud)示例.py:
#!/usr/bin/env python3
class Example:
value = 3
def update(self):
self.value = 4
Run Code Online (Sandbox Code Playgroud)
测试示例.py:
#!/usr/bin/env python3
import unittest
from example.example import Example
class TestExample(unittest.TestCase):
def test_example(self):
example_object = Example()
self.assertEqual(3, example_object.value)
example_object.update()
self.assertEqual(4, example_object.value)
Run Code Online (Sandbox Code Playgroud)
运行以下终端命令:
coverage run --branch -m unittest discover -s . && coverage report
Run Code Online (Sandbox Code Playgroud)我应该得到:Ran 1 test in x.yz seconds,但我总是得到Ran 0 tests in x.yz …
我对 Python 还很陌生,我想使用这个库。但是,该类的构造函数中有一个参数,我找不到任何相关信息。
init方法如下所示:
def __init__(self, ain1, ain2, bin1, bin2, *, microsteps=16):
* 有什么作用?据我所知,自我只是对象本身,其他只是论证。但是 * 是什么?
完整课程链接: 查看第 73 行
提前致谢
我正在设计一个具有以下结构的Python包:
package
|_subpackage1
|_module11.py
|_module12.py
|___init__.py
|_subpackage2
|_module21.py
|_module22.py
|___init__.py
|___init__.py
Run Code Online (Sandbox Code Playgroud)
所有模块都需要通用的外部包,如numpy或os,并相互调用:例如module11调用module21和module11调用module21
到目前为止,我的所有模块都有一个很长的导入标头,用于导入外部包和我自己的模块。我说当我用 Ananconda 调用我的模块时,我的脚本初始化非常慢,我认为这是因为那些复杂的互连导入
对于外部包和我自己的模块,我应该在不同的地方放置什么__init__.py以避免多次导入同一包,以及每个模块中的长标头?
我/docker-entrypoint-initdb.d从这个答案中发现了目录,还阅读了“如何使用这个图像”MySQL 文档的“初始化一个新实例”部分。但是当我docker-compose up在包含以下docker-compose.yml文件的目录中运行时,我的数据库没有初始化。
services:
# Use root/root as MySQL user/password credentials
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_DATABASE: db
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/init:/docker-entrypoint-initdb.d/:ro
adminer:
image: adminer
restart: always
ports:
- 8080:8080
Run Code Online (Sandbox Code Playgroud)
我确认该./mysql/init目录包含一个名为init.sql. 我确认在清空./mysql/data目录并运行后docker-compose up,db创建了一个数据库。但是没有填充数据库,除非我在 Adminer 中手动执行脚本。(我单击“导入”,然后选择文件并按“执行”按钮。)
运行后docker-compose up,我在控制台输出中查找消息,这些消息表明尝试运行init.sql但找不到任何内容。
更新: MySQL 版本为 8.0.19。
为什么要使用->in def __init__(self, n) -> None:?我阅读了PEP 484的以下摘录,但我无法理解它的含义。
(请注意, 的返回类型
__init__应该用 注释-> None。这样做的原因很微妙。如果__init__假设返回注释是-> None,这是否意味着无参数、未注释的__init__方法仍应进行类型检查?而不是离开这种模棱两可的或引入异常的异常,我们只是说__init__应该有一个返回注释;因此默认行为与其他方法相同。)
usingdef __init__(self, n) -> None:和之间的细微区别是def __init__(self, n):什么?有人可以用简单的话解释引用的摘录吗?
我一直在努力奋斗三天,以__init__"自我"为主题,从Learn Python the Hard Way练习开始42,然后继续阅读Python文档的部分内容,Alan Gauld关于面向对象编程,Stack 的章节像"自我"这样的线程,这个,坦率地说,我正准备用砖块击打自己,直到我昏倒.
话虽这么说,我注意到在初始__init__定义中有一个非常常见的约定,即跟进(self,foo)然后立即在该定义中声明self.foo = foo.
来自LPTHW,ex42:
class Game(object):
def __init__(self, start):
self.quips = ["a list", "of phrases", "here"]
self.start = start
Run Code Online (Sandbox Code Playgroud)
来自艾伦·高尔德:
def __init__(self,val): self.val = val
Run Code Online (Sandbox Code Playgroud)
我正处在那个可怕的空间里,我可以看到那里只有一件大事,我没有得到,而且无论我多少读到它并尝试弄明白,我仍然保持不透明.也许如果有人能够向我解释这一点点的一致性,那么光就会亮起来.这是因为我们需要说变量"foo"将始终等于(foo)参数,该参数本身包含在"self"参数中,该参数会自动分配给附加到它的def吗?