标签: init

Swift 无法在类 init 方法中分配给 self

我有一堂课叫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”是不可变的

init swift

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

如何在python中安装带有下划线的模块名称?

我正在尝试安装 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

python import module init levenshtein-distance

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

Gitkraken 工作流程:如何初始化本地和远程?

我是 Gitkraken 的新用户,有一个工作流程我无法从文档中轻易弄清楚:

  • 我有一个以前从未有过存储库的编程项目
  • 我想在我已经使用的目录中为其创建一个本地存储库
  • 同时,我想在 Bitbucket.org 上创建一个远程存储库,并正确连接,以便“推”和“拉”按钮正常工作。

创建本地很容易,但是“添加远程”给了我一个奇怪的错误消息,“不匹配”。我不太理解这个“添加远程”命令:它可以在远程站点上创建一个存储库,还是仅仅附加到必须已经存在的存储库?我通过浏览器创建它并在终端使用“git add remote”克服了这个错误,但这很笨拙,我想做得更好。

我还尝试通过使用 Gitkraken File > Init 命令并选中“同时克隆”复选框来执行此操作,但这给我带来了错误消息:“目录已存在且不为空。” 不,Gitkraken,你错了!我不想将新的(空)远程存储库克隆到本地,我想将新的本地存储库复制到其中。反向操作!

那么,为新纳入 Git 版本控制的项目创建本地和关联远程的最佳工作流程是什么?

git init bitbucket gitkraken

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

通过可执行 Jar 启动时,Spring Boot 应用程序日志记录不会发生

我有一个 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)

java init executable-jar maven spring-boot

5
推荐指数
0
解决办法
1807
查看次数

Coverage.py 无法发现子目录中没有 init.py 文件的测试

当我运行 python 的覆盖率时,我总是需要__init__.py在测试子目录中有一个空文件来获取运行测试的覆盖率。这是 python2 软件包的要求,但不是 python3 的要求。为了重现,我执行了以下操作(先决条件是 python3、pip3 和 brew):

  1. 运行以下终端命令:

    pip3 install coverage
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建以下目录结构:

    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)
  1. 运行以下终端命令:

    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 coverage.py python-3.x

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

Python __init__ * 参数

我对 Python 还很陌生,我想使用这个库。但是,该类的构造函数中有一个参数,我找不到任何相关信息。

init方法如下所示:

def __init__(self, ain1, ain2, bin1, bin2, *, microsteps=16):

* 有什么作用?据我所知,自我只是对象本身,其他只是论证。但是 * 是什么?

完整课程链接: 查看第 73 行

提前致谢

python init

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

避免在多个 python 模块中多次导入相同的包

我正在设计一个具有以下结构的Python包:

package
 |_subpackage1
     |_module11.py
     |_module12.py
     |___init__.py
 |_subpackage2
     |_module21.py
     |_module22.py 
     |___init__.py
 |___init__.py
Run Code Online (Sandbox Code Playgroud)

所有模块都需要通用的外部包,如numpyos,并相互调用:例如module11调用module21module11调用module21

到目前为止,我的所有模块都有一个很长的导入标头,用于导入外部包和我自己的模块。我说当我用 Ananconda 调用我的模块时,我的脚本初始化非常慢,我认为这是因为那些复杂的互连导入

对于外部包和我自己的模块,我应该在不同的地方放置什么__init__.py以避免多次导入同一包,以及每个模块中的长标头?

python import python-module init package

5
推荐指数
0
解决办法
254
查看次数

为什么我的 docker-entrypoint-initdb.d 脚本(在 docker-compose.yml 中指定)没有被执行来初始化一个新的 MySQL 实例?

/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 updb创建了一个数据库。但是没有填充数据库,除非我在 Adminer 中手动执行脚本。(我单击“导入”,然后选择文件并按“执行”按钮。)

运行后docker-compose up,我在控制台输出中查找消息,这些消息表明尝试运行init.sql但找不到任何内容。

更新: MySQL 版本为 8.0.19。

mysql init docker docker-compose

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

为什么我们应该在 def __init__(self, n) -&gt; None: 中使用 -&gt;

为什么要使用->in def __init__(self, n) -> None:?我阅读了PEP 484的以下摘录,但我无法理解它的含义。

(请注意, 的返回类型__init__应该用 注释 -> None。这样做的原因很微妙。如果__init__假设返回注释是-> None,这是否意味着无参数、未注释的__init__方法仍应进行类型检查?而不是离开这种模棱两可的或引入异常的异常,我们只是说__init__应该有一个返回注释;因此默认行为与其他方法相同。)

usingdef __init__(self, n) -> None:和之间的细微区别是def __init__(self, n):什么?有人可以用简单的话解释引用的摘录吗?

python class init

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

Python:必须__init __(self,foo)后面跟着self.foo = foo?

我一直在努力奋斗三天,以__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吗?

python init self

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