标签: slots

使用自定义表体实现选择 Vuetify 数据表的所有行

当我有一个插槽主体的自定义实现时,我无法弄清楚如何使用Vuetify v2为我的数据表实现选选项。

这是一个小例子:

<template>
  <v-card
    max-width="300"
    class="pa-6"
  >
    <v-data-table
      :items="tasks"
      :headers="headers"
      show-select
      dense
    >
      <template v-slot:body="{ items }">
        <tbody>
          <tr
            v-for="item in items"
            :key="item.id"
          >
            <td>
              <v-checkbox
                v-model="selectedTasks"
                :value="item.id"
                style="margin:0px;padding:0px"
                hide-details
              />
            </td>
            <td>{{ item.text }}</td>
            <td>
              <v-btn
                text
                icon
                x-small
              >
                <v-icon>pageview</v-icon>
              </v-btn>
            </td>
          </tr>
        </tbody>
      </template>
    </v-data-table>
  </v-card>
</template>
Run Code Online (Sandbox Code Playgroud)
<script>
export default {
  data() {
    return {
      headers: [
        { text: 'task', value: 'text' },
        { text: 'actions' }
      ],
      selectedTasks: [] …
Run Code Online (Sandbox Code Playgroud)

datatable slots slot vue.js vuetify.js

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

如何在Python中实现__slots__?

python descriptor python-c-api slots python-3.x

12
推荐指数
1
解决办法
1146
查看次数

在 dataclass(slots=True) 子类中调用 super() 时出现类型错误

我正在尝试使用slots=TruePython 3.10.5 中的数据类调用超类方法。

from dataclasses import dataclass


@dataclass(slots=True)
class Base:
    def hi(self):
        print("Hi")


@dataclass(slots=True)
class Sub(Base):
    def hi(self):
        super().hi()


Sub().hi()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

Traceback (most recent call last):
  File "...", line 16, in <module>
    Sub().hi()
  File "...", line 13, in hi
    super().hi()
TypeError: super(type, obj): obj must be an instance or subtype of type
Run Code Online (Sandbox Code Playgroud)

slots=True如果我从 中删除Sub,或者手动将其设为非数据类,则效果很好__slots__。如果我改为执行这些操作,错误仍然存​​在Base

Sub.__mro__(<class '__main__.Sub'>, <class '__main__.Base'>, <class 'object'>)isinstance(Sub(), Base)True

python inheritance slots python-dataclasses

12
推荐指数
1
解决办法
755
查看次数

有没有办法获得课程的插槽?

我有一个像这样的课

(defclass shape ()
 ((color :initform :black)
 (thickness :initform 1)
 (filledp :initform nil)
 (window :initform nil)))
Run Code Online (Sandbox Code Playgroud)

如果我只知道这个类的实例,那么common-lisp中是否有一个函数如何获取这些插槽的列表?

class common-lisp clos slots lispworks

10
推荐指数
1
解决办法
1539
查看次数

使用带有插槽的Python描述符

我希望能够在具有插槽优化的类中使用python描述符:

class C(object):    
    __slots__ = ['a']
    a = MyDescriptor('a')
    def __init__(self, val):
        self.a = val
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是如何实现描述符类,以便能够在调用描述符对象的类实例中存储值.通常的解决方案看起来像下面的解决方案,但由于在C类中调用"slots"时不再定义"dict",因此无法工作:

class MyDescriptor(object):
    __slots__ = ['name']    
    def __init__(self, name_):
        self.name = name_
    def __get__(self, instance, owner):
        if self.name not in instance.__dict__:
            raise AttributeError, self.name
        return instance.__dict__[self.name]     
    def __set__(self, instance, value):
        instance.__dict__[self.name] = value
Run Code Online (Sandbox Code Playgroud)

python descriptor slots

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

腌制具有 __slots__ 的冻结数据类

如何使用 pickle 冻结数据类的实例__slots__?例如,以下代码在 Python 3.7.0 中引发异常:

import pickle
from dataclasses import dataclass

@dataclass(frozen=True)
class A:
  __slots__ = ('a',)
  a: int

b = pickle.dumps(A(5))
pickle.loads(b)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 3, in __setattr__
dataclasses.FrozenInstanceError: cannot assign to field 'a'
Run Code Online (Sandbox Code Playgroud)

如果我删除frozen__slots__. 这只是一个错误吗?

python pickle slots python-dataclasses

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

在带有 slot=True 的数据类中使用 super() 时出现类型错误

我有一个带有(某种)getter 方法的数据类。

此代码按预期工作:

from dataclasses import dataclass

@dataclass()
class A:
    def get_data(self):
        # get some values from object's fields
        # do some calculations
        return "a calculated value"

@dataclass()
class B(A):
    def get_data(self):
        data = super().get_data()
        return data + " (modified)"


b = B()

print(b.get_data())  # a calculated value (modified)
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加slots=True,我会得到TypeError

from dataclasses import dataclass

@dataclass(slots=True)
class A:
    def get_data(self):
        return "a calculated value"

@dataclass(slots=True)
class B(A):
    def get_data(self):
        data = super().get_data()
        return data + " (modified)" …
Run Code Online (Sandbox Code Playgroud)

python slots python-dataclasses

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

如何使用自引用和带有插槽的类来挑选和取消对象?

当此对象通过其中一个属性引用自身时,从带有插槽的类中拾取对象的正确方法是什么?这是一个简单的例子,我目前的实现,我不确定是100%正确:

import weakref
import pickle

class my_class(object):

    __slots__ = ('an_int', 'ref_to_self', '__weakref__')

    def __init__(self):
        self.an_int = 42
        self.ref_to_self = weakref.WeakKeyDictionary({self: 1})

    # How to best write __getstate__ and __setstate__?
    def __getstate__(self):

        obj_slot_values = dict((k, getattr(self, k)) for k in self.__slots__)
        # Conversion to a usual dictionary:
        obj_slot_values['ref_to_self'] = dict(obj_slot_values['ref_to_self'])
        # Unpicklable weakref object:
        del obj_slot_values['__weakref__']
        return obj_slot_values

    def __setstate__(self, data_dict):
        # print data_dict
        for (name, value) in data_dict.iteritems():
            setattr(self, name, value)
        # Conversion of the dict back to a WeakKeyDictionary: …
Run Code Online (Sandbox Code Playgroud)

python pickle slots

8
推荐指数
1
解决办法
4105
查看次数

如何使__slots__更好地使用数据类?

决定除去直接支持__slots__从数据类为Python 3.7。

尽管如此,__slots__仍可以与数据类一起使用:

from dataclasses import dataclass

@dataclass
class C():
    __slots__ = "x"
    x: int
Run Code Online (Sandbox Code Playgroud)

但是,由于这种方式__slots__有效,因此无法为数据类字段分配默认值:

from dataclasses import dataclass

@dataclass
class C():
    __slots__ = "x"
    x: int = 1
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'x' in __slots__ conflicts with class variable
Run Code Online (Sandbox Code Playgroud)

如何__slots__与默认dataclass字段一起使用?

python slots python-3.x python-dataclasses

8
推荐指数
5
解决办法
2094
查看次数

插槽无法在没有 Shadow dom 的 html Web 组件上工作

我有一个没有shadow dom 的html web 组件,我尝试添加一个插槽。由于某种原因它不起作用。

我希望它将“Foo bar”切换为“Hello world”,但这并没有发生。

  1. slot 只适用于 Shadow dom 和模板吗?
  2. 我怎样才能让它发挥作用?

class HelloWorld extends HTMLElement {
  constructor() {
    super();
  }

  connectedCallback() {
    this.innerHTML = `
      <div>
        <slot name="element-name">Foo Bar</slot>
      </div>
    `;
  }
}

customElements.define("hello-world", HelloWorld);
Run Code Online (Sandbox Code Playgroud)
<hello-world>
  <span slot="element-name">Hello World</span>
</hello-world>
Run Code Online (Sandbox Code Playgroud)

javascript components slots native-web-component

8
推荐指数
1
解决办法
3835
查看次数