你的问题再次寻找后,我想你在找什么为是访问SortedListWithKey
对象,就好像它是一个的方式列表并使用Traits
或TraitsUI
机器来验证/查看/修改它。 Property
特性在这里可以帮助您查看SortedListWithKey
作为list
。我已经修改我的代码下面的例子有另一个特点是Property(List(Str))
,并用一个简单的TraitsUI查看:
from sortedcontainers import SortedListWithKey
from traits.api import Callable, HasTraits, List, Property, Str
from traitsui.api import Item, View
class MyClass(HasTraits):
sorted_list_object = SortedListWithKey(key='key_func')
sorted_list = Property(List(Str), depends_on='sorted_list_object')
key_func = Callable
def _get_sorted_list(self):
return list(self.sorted_list_object)
def default_key_func(self):
def first_two_characters(element):
return element[:2]
return first_two_characters
def default_traits_view(self):
view = View(
Item('sorted_list', style='readonly')
)
return view
if __name__ == '__main__':
example = MyClass()
example.sorted_list_object = SortedListWithKey(
['first', 'second', 'third', 'fourth', 'fifth']
)
example.configure_traits()
你的意思是一个'SortedListWithKey(实例(SomeClass的),关键= some_key)'? – mgilson
抱歉不清楚。我想要的是一种使用'SortedListWithKey(Instance(SomeClass))'而不是'List(Instance(SomeClass))'的方法。 'key'部分是'SortedListWithKey'的细节,它是一个函数,用于定义列表元素是如何进行红外线的。 – MindV0rtex
它可能取决于你的情况'SomeClass'是什么类。它当然需要是一个迭代器,然后你提供给'key'参数的东西需要是一个可调用的函数,作为迭代器元素的比较点,它本身可以是一个Trait,就像简单的例子如下: –