假设我们得到以下代码:
class NonNegative():
def __set_name__(self, owner, name):
self.name = name
def __get__(self, instance, owner):
if instance is None:
return self
return instance.__dict__[self.name]
def __set__(self, instance, value):
instance.__dict__[self.name] = value
class Person:
fingerCount = NonNegative()
eyesCount = NonNegative()
def __init__(self, name):
self.name = name
p = Person("name")
print(p.fingerCount) <----- I want a default value printed here, instead of a KeyError
print(p.eyesCount) <----- ------ | | ------
我将如何分别为fingerCount和eyesCount分配默认(初始)值?
这样我就不必做:
p = Person("name")
p.fingerCount = 10
p.eyesCount = 2
print(p.fingerCount) # output: 10
print(p.eyesCount) # output: 2
,但是可以这样做:
p = Person("name")
print(p.fingerCount) # output: 10
print(p.eyesCount) # output: 2
将默认值传递给__init__
方法,当instance.__dict__[self.name]
不存在时,将其保存以供使用。
用于更静态的硬编码解决方案