小编Phi*_*erg的帖子

如何通过__dict__分配新的类属性?

我想通过字符串对象分配一个类属性 - 但是如何?

例:

class test(object):
  pass

a = test()
test.value = 5
a.value
# -> 5
test.__dict__['value']
# -> 5

# BUT:
attr_name = 'next_value'

test.__dict__[attr_name] = 10
# -> 'dictproxy' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

python oop attributes class

41
推荐指数
1
解决办法
1万
查看次数

有没有一种标准的pythonic方法来处理python中的物理单位/数量?

有没有一种标准的pythonic方法来处理python中的物理单位/数量?我从物理学或神经科学等不同领域看到了不同的模块特定解决方案.但我宁愿使用标准方法而不是"孤岛"解决方案,因为其他人应该能够轻松读取我的代码.

python physics units-of-measurement

20
推荐指数
2
解决办法
1771
查看次数

如何顺利地以pythonic方式集成SQLAlchemy和子类Numpy.ndarray?

我想name在关系数据库中通过SQLAlchemy 存储带注释(例如)的numpy-arrays .为此,

  • 我通过数据传输对象(DTONumpy作为其一部分MyNumpy)从数据中分离出numpy数组.
  • 收集numpy对象Container.

什么是一个很好的和pythonic方式修改Container(从下面的例子)以一种直接提供列表的方式MyNumpy-objects而不是DTONumpySQLAlchemy提供的?

以下是问题的说明:

import numpy as np
import zlib

import sqlalchemy as sa
from sqlalchemy.orm import relationship, scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.types import TypeDecorator, CHAR

DBSession = scoped_session(sessionmaker())
Base = declarative_base()

#### New SQLAlchemy-Type #####################
class NumpyType (sa.types.TypeDecorator):
    impl = sa.types.LargeBinary

    def process_bind_param(self, value, dialect):
        return zlib.compress(value.dumps(), 9)

    def process_result_value(self, value, dialect):
        return np.loads(zlib.decompress(value))
##############################################


class DTONumpy(Base):
    __tablename__ = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy numpy

20
推荐指数
1
解决办法
3295
查看次数

如何获得由等高线图绘制的线的(x,y)值?

有没有一种简单的方法来获得如下所示的轮廓线的(x,y)值:

import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [1,2,3,4]
m = [[15,14,13,12],[14,12,10,8],[13,10,7,4],[12,8,4,0]]
cs = plt.contour(x,y,m, [9.5])
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib data-analysis

14
推荐指数
1
解决办法
4347
查看次数

为什么双切片numpy数组的赋值不起作用?

为什么以下几行不能按预期工作?

import numpy as np
a = np.array([0,1,2,1,1])
a[a==1][1:] = 3
print a
>>> [0 1 2 1 1]
# I would expect [0 1 2 3 3]
Run Code Online (Sandbox Code Playgroud)

这是一个'错误'还是有另一种推荐方式?

另一方面,以下工作:

a[a==1] = 3
print a
>>> [0 3 2 3 3]
Run Code Online (Sandbox Code Playgroud)

干杯,菲利普

python numpy variable-assignment slice

10
推荐指数
2
解决办法
2230
查看次数

在Sphinx文档中,如何恢复"glob"标志选项提供的toctree的顺序?

有没有人知道按文件名的降序订购toctree的任何选项?在升序的情况下,我们可以使用:glob:选项,如下所示:

.. toctree:
   :glob:

   2011*
Run Code Online (Sandbox Code Playgroud)

对于应在Sphinx文档中报告的重组文本中的日常注释,这将非常方便.

python-sphinx

10
推荐指数
3
解决办法
1714
查看次数

如何使用动态名称实现property()(在python中)

我正在为单个神经元编程模拟.因此我必须处理很多参数.现在的想法是我有两个类,一个用于SingleParameter,一个用于参数集合.我使用property()来轻松访问参数值并使代码更具可读性.这适用于sinlge参数,但我不知道如何为集合实现它,因为我想在SingleParameter之后命名Collection中的属性.这是一个例子:

class SingleParameter(object):
  def __init__(self, name, default_value=0, unit='not specified'):
    self.name = name
    self.default_value = default_value
    self.unit = unit
    self.set(default_value)
  def get(self):
    return self._v
  def set(self, value):
    self._v = value
  v = property(fget=get, fset=set, doc='value of parameter')

par1 = SingleParameter(name='par1', default_value=10, unit='mV')
par2 = SingleParameter(name='par2', default_value=20, unit='mA')

# par1 and par2 I can access perfectly via 'p1.v = ...'
# or get its value with 'p1.v'

class Collection(object):
  def __init__(self):
    self.dict = {}
  def __getitem__(self, name):
    return self.dict[name] # get the …
Run Code Online (Sandbox Code Playgroud)

python oop parameters properties

9
推荐指数
3
解决办法
8885
查看次数

如何在Tkinter消息窗口中自动滚动

我编写了以下类,用于在额外窗口中生成"监视"输出.

  1. 不幸的是,它不会自动滚动到最近的行.怎么了?
  2. 因为我也遇到了Tkinter和ipython的问题:qt4的等效实现怎么样?

这是代码:

import Tkinter
class Monitor(object):
  @classmethod
  def write(cls, s):
    try:
      cls.text.insert(Tkinter.END, str(s) + "\n")
      cls.text.update()
    except Tkinter.TclError, e:
      print str(s)
  mw = Tkinter.Tk()
  mw.title("Message Window by my Software")
  text = Tkinter.Text(mw, width = 80, height = 10)
  text.pack()
Run Code Online (Sandbox Code Playgroud)

用法:

Monitor.write("Hello World!")
Run Code Online (Sandbox Code Playgroud)

python qt tkinter qt4 ipython

9
推荐指数
2
解决办法
1万
查看次数

6
推荐指数
2
解决办法
1万
查看次数

如何使用SQLAlchemy在一次提交中切换唯一行的两个字段?

假设有一个具有唯一名称的对象.现在要切换两个对象的名称:

这是布局:

import sqlalchemy as sa
import sqlalchemy.orm as orm
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class MyObject(Base):
  __tablename__ = 'my_objects'
  id = sa.Column(sa.Integer, primary_key=True)
  name = sa.Column(sa.Text, unique=True)

if __name__ == "__main__":
  engine = sa.create_engine('sqlite:///:memory:', echo=True)
  Session = orm.sessionmaker(bind=engine)
  Base.metadata.create_all(engine)
  session = Session()
Run Code Online (Sandbox Code Playgroud)

我想这样做:

a = MyObject(name="Max")
b = MyObject(name="Moritz")
session.add_all([a, b])
session.commit()

# Now: switch names!
tmp = a.name
a.name = b.name
b.name = tmp
session.commit()
Run Code Online (Sandbox Code Playgroud)

这引发了IntegrityError.有没有办法在一次提交中切换这些字段而没有此错误?

python sqlalchemy unique-constraint

6
推荐指数
2
解决办法
552
查看次数

如何使用以名称列表作为参数的装饰器向类添加属性?

我想通过装饰器向类中添加许多虚拟属性,如下所示:

def addAttrs(attr_names):
  def deco(cls):
    for attr_name in attr_names:
      def getAttr(self):
        return getattr(self, "_" + attr_name)
      def setAttr(self, value):
        setattr(self, "_" + attr_name, value)
      prop = property(getAttr, setAttr)
      setattr(cls, attr_name, prop)
      setattr(cls, "_" + attr_name, None) # Default value for that attribute
    return cls
  return deco

@addAttrs(['x', 'y'])
class MyClass(object):
  pass
Run Code Online (Sandbox Code Playgroud)

不幸的是,decoarator似乎保留了引用attr_name而不是其内容.因此,MyClass.xMyClass.y访问MyClass._y:

a = MyClass()
a.x = 5
print a._x, a._y
>>> None, 5
a.y = 8
print a._x, a._y
>>> None, …
Run Code Online (Sandbox Code Playgroud)

python decorator

6
推荐指数
1
解决办法
2266
查看次数

如何用sqlalchemy编写自己的聚合函数?

如何用SQLAlchemy编写自己的聚合函数?作为一个简单的例子,我想使用numpy来计算方差.使用sqlite它看起来像这样:

import sqlite3 as sqlite
import numpy as np

class self_written_SQLvar(object):
  def __init__(self):
    import numpy as np
    self.values = []
  def step(self, value):
    self.values.append(value)
  def finalize(self):
    return np.array(self.values).var()

cxn = sqlite.connect(':memory:')
cur = cxn.cursor()
cxn.create_aggregate("self_written_SQLvar", 1, self_written_SQLvar)
# Now - how to use it:
cur.execute("CREATE TABLE 'mytable' ('numbers' INTEGER)")
cur.execute("INSERT INTO 'mytable' VALUES (1)") 
cur.execute("INSERT INTO 'mytable' VALUES (2)") 
cur.execute("INSERT INTO 'mytable' VALUES (3)") 
cur.execute("INSERT INTO 'mytable' VALUES (4)")
a = cur.execute("SELECT avg(numbers), self_written_SQLvar(numbers) FROM mytable")
print a.fetchall()
>>> [(2.5, …
Run Code Online (Sandbox Code Playgroud)

python sqlite sqlalchemy aggregate-functions

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

尽管使用pyplot.show(),我如何使用matplotlib保持图形大小不变?

看看下面的python示例:

import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['figure.figsize'] = [8.27, 11.69]
fig = plt.figure()
plt.show() # This line causes problems with figsize
fig.savefig('test.pdf')
Run Code Online (Sandbox Code Playgroud)

如果我使用"plt.show()",test.pdf的数字大小发生很大变化(来自

  • 210 x 297 [mm] to
  • 213 x 250 [mm]

为了保持不变,我该怎么做?

python matplotlib

3
推荐指数
1
解决办法
5735
查看次数