这是一个纯Python特定的设计问题:
class MyClass(object):
...
def get_my_attr(self):
...
def set_my_attr(self, value):
...
Run Code Online (Sandbox Code Playgroud)
和
class MyClass(object):
...
@property
def my_attr(self):
...
@my_attr.setter
def my_attr(self, value):
...
Run Code Online (Sandbox Code Playgroud)
Python让我们可以这样做.如果你要设计一个Python程序,你会使用哪种方法?为什么?
考虑users集合中的MongoDB文档:
{ username : 'Alex', tags: ['C#', 'Java', 'C++'] }
Run Code Online (Sandbox Code Playgroud)
有没有办法,tags从服务器端获取数组的长度(不将标签传递给客户端)?
谢谢!
我最终切换%到.format()2.x代码中的字符串格式化运算符,以便将来更容易迁移到3.x. 有一点令人惊讶的是,不仅%在Py3中保留了样式格式,而且它在标准库代码中被广泛使用.这似乎是合乎逻辑的,因为写作'(%s)' % variable有点短,也许比较容易理解'({})'.format(variable).但我仍有疑问.在代码中使用这两种方法是否合适(pythonic?)?谢谢.
我对mod_wsgi的多重管理功能以及将在具有多处理能力的WSGI服务器上执行的WSGI应用程序的一般设计感到困惑.
请考虑以下指令:
WSGIDaemonProcess example processes=5 threads=1
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,mod_wsgi将生成5个Python(例如CPython)进程,并且这些进程中的任何一个都可以接收来自用户的请求.
文件说:
共享数据需要对所有应用程序实例可见,无论它们执行哪个子进程,并且一个应用程序对数据所做的更改都可以立即供另一个应用程序使用,包括在另一个子进程中执行的任何子进程,外部数据存储,如必须使用数据库或共享内存.普通Python模块中的全局变量不能用于此目的.
但是在这种情况下,当想要确定应用程序在任何WSGI条件(包括多处理条件)中运行时,它会变得非常沉重.
例如,一个包含当前连接用户数量的简单变量 - 它应该是从/向memcached进行过程安全读/写,还是DB或(如果有这样的标准库机制可用)共享记忆?
并且代码会像
counter = 0
@app.route('/login')
def login():
...
counter += 1
...
@app.route('/logout')
def logout():
...
counter -= 1
...
@app.route('/show_users_count')
def show_users_count():
return counter
Run Code Online (Sandbox Code Playgroud)
在多处理环境中表现不可预测?
谢谢!
考虑以下html:
<div class="image">
<img src="sample.png"/>
<div class="text">
Text of variable length
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
哪里:
.image {
position:relative;
text-align:center; // doesn't work as desired :(
}
.text {
position:absolute;
top:30px;
}
Run Code Online (Sandbox Code Playgroud)
如果有办法在.imagediv 的中心水平对齐文本,你能告诉我吗?我不能使用该left属性,因为文本的长度是未知的,text-align属性不适用于.textdiv :(
谢谢.
有人熟悉一个稳定的C++解决方案(库,代码片段等),它将protobuf消息转换成JSON或从JSON转换出来吗?
考虑具有以下签名的函数:
(defn make-widget [& {:keys [x y] :or {x 10 y 20}}]
...)
Run Code Online (Sandbox Code Playgroud)
将地图传递给函数的最佳方法是什么,例如:
(make-widget {:x 100})
Run Code Online (Sandbox Code Playgroud)
要么
(make-widget {:y 200 :x 0})
Run Code Online (Sandbox Code Playgroud)
目前有什么我想到的是通过vec,flatten并apply如:
(apply make-widget (flatten (vec ({:x 100}))
Run Code Online (Sandbox Code Playgroud)
我坚信有更好的方法可以做到这一点.你能考虑一下吗?
我想知道,如果Python中有方法修改集合而不创建新集合.例如:
lst = [1, 2, 3, 4, 5, 6]
new_lst = [i for i in lst if i > 3]
Run Code Online (Sandbox Code Playgroud)
工作得很好,但创建了一个新的集合.是否有一个原因,Python集合缺少一个filter()可以修改集合对象的方法(或类似的)?
我无法理解为什么以下代码表现出特定的方式,如下所述:
from abc import ABCMeta
class PackageClass(object):
__metaclass__ = ABCMeta
class MyClass1(PackageClass):
pass
MyClass2 = type('MyClass2', (PackageClass, ), {})
print MyClass1
print MyClass2
>>> <class '__main__.MyClass1'>
>>> <class 'abc.MyClass2'>
Run Code Online (Sandbox Code Playgroud)
为什么repr(MyClass2)说abc.MyClass2(这是不正确的)?谢谢!
我试图实现一个简单的想法,将数据从stdin传递到协程:
import asyncio
import sys
event = asyncio.Event()
def handle_stdin():
data = sys.stdin.readline()
event.data = data # NOTE: data assigned to the event object
event.set()
@asyncio.coroutine
def tick():
while 1:
print('Tick')
yield from asyncio.sleep(1)
if event.is_set():
data = event.data # NOTE: data read from the event object
print('Data received: {}'.format(data))
event.clear()
def main():
loop = asyncio.get_event_loop()
loop.add_reader(sys.stdin, handle_stdin)
loop.run_until_complete(tick())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但是带有变量而不是Event对象的简化版本也适用:
data = None
def handle_stdin():
global data
data = sys.stdin.readline()
@asyncio.coroutine
def tick(): …Run Code Online (Sandbox Code Playgroud) python ×6
abc ×1
alignment ×1
c++ ×1
class ×1
clojure ×1
collections ×1
coroutine ×1
css ×1
destruction ×1
html ×1
image ×1
json ×1
map ×1
mod-wsgi ×1
mongodb ×1
nosql ×1
properties ×1
python-3.4 ×1
python-3.x ×1
string ×1
wsgi ×1