Descriptors cannot not be created directly.怎么解决
时间: 2023-09-19 07:06:10 浏览: 82
advanced_descriptors-3.0.9.post0-cp37-cp37m-win32.whl.zip
这个错误通常是由于尝试直接创建描述符而导致的。描述符必须作为类属性定义,并且需要实现 `__get__()`、`__set__()` 或 `__delete__()` 中的至少一个方法。如果你尝试在函数或实例方法中创建描述符,则会出现 `Descriptors cannot not be created directly` 错误。
要解决这个问题,请确保你在类定义中定义了描述符,并且正确地实现了所需的方法。例如:
```python
class MyDescriptor:
def __get__(self, instance, owner):
# 实现 __get__() 方法
def __set__(self, instance, value):
# 实现 __set__() 方法
class MyClass:
my_descriptor = MyDescriptor() # 在类定义中定义描述符
```
在这个例子中,我们定义了一个名为 `MyDescriptor` 的描述符,并将其作为 `MyClass` 的属性 `my_descriptor` 定义。这样,我们就可以在实例化 `MyClass` 对象时使用 `my_descriptor` 这个描述符。
请注意,在描述符类中实现 `__get__()`、`__set__()` 和 `__delete__()` 方法时,需要考虑到它们被使用的上下文。例如,`__get__()` 方法应该返回描述符的值,而不是描述符本身。
阅读全文