擅长:python、mysql、java
<p>帕特里克·豪是对的,我试图用错误的方式解决这个问题。描述词是正确的方法:</p>
<pre><code>from typing import TypeVar, Generic, Optional, ClassVar, Any, Type
FieldValueType = TypeVar('FieldValueType')
class Field(Generic[FieldValueType]):
value_type: Type[FieldValueType]
def __init__(self) -> None:
self.value: FieldValueType = self.value_type()
def __get__(self, obj, objtype) -> 'Field':
print('Retrieving', self.__class__)
return self
def __set__(self, obj, value):
print('Updating', self.__class__)
self.value = value
def to_string(self):
return self.value
class StringField(Field[str]):
value_type = str
class IntField(Field[int]):
value_type = int
def to_string(self):
return str(self.value)
class Person:
age = IntField()
person = Person()
person.age = 25
print(person.age.to_string())
</code></pre>
<p><code>MyPy</code>完全可以理解这一点。谢谢!在</p>