小编Car*_*l G的帖子

如何在Angular2 ngSwitch语句中使用typescript枚举值

Typescript枚举似乎与Angular2的ngSwitch指令自然匹配.但是当我尝试在我的组件模板中使用枚举时,我得到"无法读取未定义的属性'xxx'......".如何在组件模板中使用枚举值?

请注意,这与基于枚举(ngFor)的所有值创建html选择选项的方法不同.这个问题是关于ngSwitch基于枚举的特定值.虽然出现了创建枚举类的内部引用的相同方法.

typescript angular

130
推荐指数
6
解决办法
12万
查看次数

实例方法的Python装饰器可以访问该类吗?

嗨我有类似下面的东西.基本上我需要从定义中的实例方法使用的装饰器访问实例方法的类.

def decorator(view):
    # do something that requires view's class
    print view.im_class
    return view

class ModelA(object):
    @decorator
    def a_method(self):
        # do some stuff
        pass
Run Code Online (Sandbox Code Playgroud)

代码原样给出

AttributeError: 'function' object has no attribute 'im_class'

我发现类似的问题/答案 - Python装饰器让函数忘记它属于一个类Python装饰器中的Get类 - 但这些依赖于一种解决方法,它通过抢夺第一个参数在运行时抓取实例.在我的情况下,我将基于从其类中收集的信息调用该方法,因此我不能等待来电.

谢谢.

python decorator

99
推荐指数
6
解决办法
5万
查看次数

Django模板中的备用行着色具有多个行集

Django模板提供内置标记,cycle用于在模板中的不同点(或模板中的循环)之间交替切换多个值,但是当在cycles定义之外的范围内访问此标记时,此标记不会重置.也就是说,如果你在你的模板两个或多个列表,所有的行,你想它的使用一些CSS定义oddeven,列表的第一行会拿起其中最后一个离开,而不是用新的迭代来自选择(oddeven)

例如,在下面的代码中,如果第一个博客的条目数量为奇数,那么第二个博客中的第一个条目将even在我希望它开始时开始odd.

{% for blog in blogs %}
  {% for entry in blog.entries %}
    <div class="{% cycle 'odd' 'even' %}" id="{{entry.id}}">
      {{entry.text}}
    </div>
  {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我尝试通过修补resetcycle此处提供的标记来避免这种情况:

Django票证:周期标记应在超出范围后重置

无济于事.(该代码对我不起作用.)

我也尝试将我的内部循环移动到自定义标记中,但这也不起作用,可能是因为编译/渲染循环将循环移回外部循环?(不管为什么,它对我不起作用.)

我怎样才能完成这个简单的任务!?我不希望在我的视图中使用预先编译的信息创建数据结构; 这似乎没必要.提前致谢.

django django-templates

58
推荐指数
2
解决办法
3万
查看次数

无法在 MacOS 上使用 pyenv Python 安装 tkinter

通过 pyenv 安装的 Python 版本无法导入tkinter

? python
Python 3.8.1 (default, Feb 29 2020, 11:45:59)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/factor/.pyenv/versions/3.8.1/lib/python3.8/tkinter/__init__.py", line 36, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
>>>
Run Code Online (Sandbox Code Playgroud)

或者您可能会收到有关标头版本与二进制文件不匹配的消息:

DEPRECATION WARNING: The system version of Tk is deprecated …
Run Code Online (Sandbox Code Playgroud)

python macos tkinter pyenv

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

在Django会话中修改字典不会修改会话

我在字典键引用的会话中存储字典:

>>> request.session['my_dict'] = {'a': 1, 'b': 2, 'c': 3}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我直接修改字典时,在下一个请求期间不会更改该值:

>>> request.session['my_dict'].pop('c')
3
>>> request.session.has_key('c')
False
# looks okay...
...
# Next request
>>> request.session.has_key('c')
True
# what gives!
Run Code Online (Sandbox Code Playgroud)

django session

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

RDD分区和切片之间有什么区别?

星火编程指南中提到的切片作为RDDS的功能(包括并行收集或Hadoop的数据集.)("星火将运行一个任务,为集群中的每个片".)但在上RDD持续性的部分,使用分区的概念没有介绍.此外,RDD文档仅提及没有提及切片的分区,而SparkContext文档提到了用于创建RDD的切片,但提到了用于在RDD上运行作业的分区.这两个概念是一样的吗?如果没有,它们有何不同?

调优 - 并行级别表示"Spark根据其大小自动设置在每个文件上运行的"map"任务的数量...对于分布式"reduce"操作,例如groupByKey和reduceByKey,它使用最大的父RDD分区数.您可以将并行级别作为第二个参数传递...."那么这可以解释分区和切片之间的区别吗?分区与RDD存储有关,切片与并行度有关,默认情况下,接头是根据数据大小还是分区数计算的?

hadoop apache-spark

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

为什么不super(Thread,self).__ init __()适用于threading.Thread子类?

我在Python中知道的每个对象都可以通过调用来处理它的基类初始化:

super(BaseClass, self).__init__()
Run Code Online (Sandbox Code Playgroud)

这似乎与子类的情况不同threading.Thread,因为如果我尝试这个SubClass.__init__(),我得到:

RuntimeError: thread.__init__() not called
Run Code Online (Sandbox Code Playgroud)

什么给出了这个错误?我查看了源代码,threading.Thread看起来__init__应该设置该方法Thread.__initialized = True.我看到所有示例都使用以下内容__init__:

class YourThread(threading.Thread):
    def __init__(self, *args):
        threading.Thread.__init__(self)
        # whatev else
Run Code Online (Sandbox Code Playgroud)

但为什么?

python multithreading

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

持久性Python命令行历史记录

我希望能够"向上箭头"到我在之前的Python解释器中输入的命令.我发现readline它提供了类似的功能模块:read_history_file,write_history_file,和set_startup_hook.虽然我还不够精明,但有人可以帮忙吗?我对解决方案的看法是:

(1)修改.login PYTHONSTARTUP以运行python脚本.(2)在那个python脚本文件中执行以下操作:

def command_history_hook():
    import readline
    readline.read_history_file('.python_history')
command_history_hook()
Run Code Online (Sandbox Code Playgroud)

(3)每当解释器退出时,将历史记录写入文件.我想最好的方法是在你的启动脚本中定义一个函数并使用该函数退出:

def ex():
    import readline
    readline.write_history_file('.python_history')
    exit()
Run Code Online (Sandbox Code Playgroud)

不过要用括号退出是非常烦人的:ex().是否有一些python糖允许ex(没有parens)运行该ex功能?

是否有更好的方法可以使历史文件每次都写入?提前感谢所有解决方案/建议.

此外,我可以看到有两种架构选择.一种选择是拥有统一的命令历史记录.好处是简单(后面窝你的home目录有很多文件的替代品.)的缺点是,你在不同的终端上运行口译将与对方的命令历史记录进行填充,它们将覆盖彼此的历史.(因为我通常是在关闭一个解释,并立即重新打开一个重新加载模块感兴趣,在这种情况下,这个解释器中的命令将被写入文件,这是没有问题啊.)一个可能的解决方案,以保持每个终端独立的历史文件是为您创建的每个新终端编写环境变量:

def random_key()
    ''.join([choice(string.uppercase + string.digits) for i in range(16)])

def command_history_hook():
    import readline
    key = get_env_variable('command_history_key')
    if key:
        readline.read_history_file('.python_history_{0}'.format(key))
    else:
        set_env_variable('command_history_key', random_key())

def ex():
    import readline
    key = get_env_variable('command_history_key')
    if not key:
        set_env_variable('command_history_key', random_key())
    readline.write_history_file('.python_history_{0}'.format(key))
    exit()
Run Code Online (Sandbox Code Playgroud)

通过将随机密钥长度从16减少到1,您可以将丢失目录的文件数减少到36,但代价是可能的重叠(2.8%).

python interpreter

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

我的.NET库列表中缺少System.Windows.Data

您好我想使用System.Windows.Data.IValueConverter,但是当我尝试在VS2010中添加对System.Windows.Data的引用时,我只看到System.Windows.Forms和System.Windows.Presentation.我错过了什么?我使用的是.NET 3.5(不是客户端版本),我认为该版本的库应该存在.将我的项目切换到.NET 4.0没有帮助.谷歌搜索没有发现任何遇到此问题的人.TIA.

.net

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

将S3文件检索为Object而不是下载到绝对系统路径

我刚开始学习和使用S3,阅读文档.实际上我没有找到任何东西将文件提取到对象而不是从S3下载?如果这可能,或者我错过了什么?

实际上我想在下载文件后避免额外的IO.

amazon-s3 amazon-web-services python-2.7 aws-sdk

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