在MDN文章面向对象的Javascript简介中关于继承的部分中,我注意到他们设置了prototype.constructor:
// correct the constructor pointer because it points to Person
Student.prototype.constructor = Student;
Run Code Online (Sandbox Code Playgroud)
这有什么重要意义吗?省略它可以吗?
我一直看到网站提到你执行'python'的目录被添加到python路径.例如在http://www.stereoplex.com/blog/understanding-imports-and-pythonpath上,作者cd到/ tmp文件夹然后执行'print(sys.path)'并且看看/ tmp文件夹出现在路径列表中.这是我在我的系统上尝试这个(安装2.6.6):
示例结构:
app/
mymodule.py
inner_folder/
myscript.py
Run Code Online (Sandbox Code Playgroud)
在myscript.py中包含以下行:
import 'mymodule.py'
Run Code Online (Sandbox Code Playgroud)
我做了什么:
cd app
python inner_folder/myscript.py # ImportError
Run Code Online (Sandbox Code Playgroud)
由于我从app /目录执行解释器,不应该将'app'放到python路径上吗?这就是我读过的很多文档都指明了行为应该如何.
请指教!
(我暂时通过手动将我想要的文件夹添加到环境中但不想永远依赖它来解决这个问题.因为许多网站都说可以这样做,我想为自己重现它)
是否有关于何时在Python中使用相对导入的规则或指南?我在Flask Web框架中一直看到它们一直在使用.在搜索这个主题时,我只看到有关如何使用相对导入的文章,但不是为什么.
使用时有一些特殊的好处:
from . import x
Run Code Online (Sandbox Code Playgroud)
而不是:
from package import x
Run Code Online (Sandbox Code Playgroud)
此外,我注意到在这个问题上,答案提到相对进口是不受欢迎的.然而人们仍然继续使用它们.
我有一个使用SQLAlchemy和MySQL的Flask Web应用程序,我已经设置了一个scopedsession().我还有一个teardown_request处理程序,在每个请求完成后调用session.remove().出于某些奇怪的原因,如果一天或更长时间没有在Web应用程序上发出请求,应用程序将获得"Operationalerror:MySQL Server已经消失".
在我的调试任务中,我查看了SHOW PROCESSLIST并看到了以下内容:
39817253 | sqladmin | my_host | kb_dev | Sleep | 174 |
Run Code Online (Sandbox Code Playgroud)
174是我的应用程序连接"休眠"的秒数.如果应用程序没有提出其他请求,它会继续计数.
即使我的请求完成后,似乎我的应用程序仍然保持与MySQL的连接!并且通常只有一个进程,无论我对我的应用程序发出多少请求,无论是否同时进行.
我的问题是连接是否正常"睡眠"这么长时间?我很确定延长睡眠会导致MySQL在某个超时后切断连接,这反过来导致"OperationalError:Mysql已经消失"错误.
我有一个子进程命令输出一些字符,如'\ xf1'.我正在尝试将其解码为utf8但我收到错误.
s = '\xf1'
s.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
以上抛出:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf1 in position 0: unexpected end of data
Run Code Online (Sandbox Code Playgroud)
当我使用'latin-1'但是不应该使用utf8时它可以正常工作吗?我的理解是latin1是utf8的子集.
我在这里错过了什么吗?
编辑:
print s # ñ
repr(s) # returns "'\\xa9'"
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取加速度计和方向数据.目前,我创建了一个AccelerometerManager和OrientationManager.他们都做同样的事情; 实现SensorEventListener并从onSensorChanged()侦听器中的values []中检索数据.
有更简单的方法吗?似乎有两个处理程序重复代码是不必要的.有没有办法使用组合的加速度计和方向数据一起访问values []数组?
由于有两个处理程序,我还必须这样做:
orientationManager = new OrientationManager(this);
orientationSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
orientationSensorManager.registerListener(orientationManager,
orientationSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
accelerometerManager = new AccelerometerManager(this);
accelerometerSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerometerSensorManager.registerListener(accelerometerManager,
orientationSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_GAME);
Run Code Online (Sandbox Code Playgroud) 我在尝试为Linux发行版构建Python RPM包时遇到以下错误.我在这个过程中看到警告,但我不认为那些与"-ba:未知错误"有关,任何想法如何让它运行?
错误:
bdist_rpm -ba: unknown option error: command 'rpm' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
我正在运行以下python setup.py脚本:
setup(
name='Tester',
version='0.1.0',
author='My Name',
author_email='emailaddress@gmail.com',
packages=['tester'],
license='LICENSE.txt',
description='IMAP Email Reader.',
long_description=open('README.txt').read(),
install_requires=[
"Django >= 1.1.1",
"caldav == 0.1.4",
],
)
Run Code Online (Sandbox Code Playgroud)
当我运行python setup.py bdist_rpm时,它会创建一个Tester.spec文件~/Tester/build/bdist.linux-x86_64/rpm/SPECS directory:
%define name Tester
%define version 0.1.0
%define unmangled_version 0.1.0
%define release 1
Summary: Email Reader.
Name: %{name}
Version: %{version}
Release: %{release}
Source0: %{name}-%{unmangled_version}.tar.gz
License: LICENSE.txt
Group: Development/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
Prefix: %{_prefix}
BuildArch: noarch
Vendor: …Run Code Online (Sandbox Code Playgroud) 我有一个YAML文件,我正在使用它作为一种配置文件.它是这样的,
tests:
- category: some_category
test:
- name: hello
key1: value1
key2: value2
- name: hithere
key1: value1
key2: value2
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
for all tests as test:
print test.name + test.key1
Run Code Online (Sandbox Code Playgroud)
我看过JYaml和SnakeYaml但他们似乎只是从YAML映射到Java对象.YAML不适合这个吗?有没有一种简单的方法来实现这一目标?我需要的是迭代并获取每个的值,类似于DOM遍历.
我正在开发一个有很多标志的命令行实用程序.典型的命令如下所示:
mycommand --foo=A --bar=B --jar=C --gnar=D --binks=E
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,会打印"成功"消息,但我仍然希望针对其他来源(如外部数据库)进行验证,以确保取得实际成功.
我开始创建集成测试,我不确定最好的方法.我主要担心的是:
手动编写单个案例并以单元测试格式验证结果的想法令人生畏.
有没有人知道可用于自动化此类测试的模式?也许甚至试图解决这个问题的软件?如何使用GNU命令行工具测试他们的软件?
testing command-line integration-testing automated-tests command-line-arguments
我有以下Python脚本:
# -*- coding: utf-8 -*-
import sys, locale
locale.setlocale(locale.LC_ALL, 'en_US.utf8')
print '??' # This works
print u'??'
Run Code Online (Sandbox Code Playgroud)
运行脚本时,我得到:
??
Traceback (most recent call last):
File "../pycli/samples/x.py", line 5, in <module>
print u'??'
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)
Run Code Online (Sandbox Code Playgroud)
但是,当我在shell中显式设置LC_ALL环境变量时,它可以工作
export LC_ALL=en_US.utf8
Run Code Online (Sandbox Code Playgroud)
所以我想知道为什么setlocale()具有相同的效果?
python ×6
unicode ×2
utf-8 ×2
android ×1
command-line ×1
encoding ×1
flask ×1
import ×1
inheritance ×1
java ×1
javascript ×1
locale ×1
module ×1
mysql ×1
oop ×1
orientation ×1
package ×1
parsing ×1
rpm ×1
sensor ×1
sqlalchemy ×1
testing ×1
yaml ×1