【发布时间】:2020-05-11 00:06:16
【问题描述】:
假设我们得到以下代码:
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 和 eyeCount 分配默认(初始)值?
这样我就不必这样做了:
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
【问题讨论】:
标签: python object properties instance descriptor