如何使用 @属性 装饰器为 class 的属性赋值?
How to assign values to the properties of the class using the @property decorator?
如何使用@property decorator
给class的属性赋值?
我的代码如下。我想计算 s1.result
的长度,同时给 s1.result
赋值。我必须编写代码才能使 s1.result
变为 None
。我该如何修改代码:
import numpy as np
class MyClass:
def __init__(self):
pass
@property
def result(self):
pass
@result.setter
def result(self, value):
self.len_of_result = len(value)
if __name__ == '__main__':
s1 = MyClass()
s1.result = np.arange(100)
print(f's1.result:{s1.result}')
print(f's1.len_of_result:{s1.len_of_result}')
结果是:
s1.result:None
s1.len_of_result:100
我期望的结果是:
s1.result:[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99]
s1.len_of_result:100
我找到了另一种方法:
import numpy as np
class MyClass:
def __init__(self):
self.result = []
@property
def len_of_result(self):
return self.result.__len__()
if __name__ == '__main__':
s1 = MyClass()
print(f's1.len_of_result:{s1.len_of_result}')
s1.result = np.arange(100)
print(f's1.result:{s1.result}')
print(f's1.len_of_result:{s1.len_of_result}')
s1.len_of_result:0
s1.result:[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99]
s1.len_of_result:100
下面是你想要的吗?
import numpy as np
class MyClass:
def __init__(self):
self._result = None
@property
def result(self):
return self._result
@result.setter
def result(self, value):
self._result = value
self.len_of_result = len(value)
if __name__ == '__main__':
s1 = MyClass()
s1.result = np.arange(100)
print(f's1.result:{s1.result}')
print(f's1.len_of_result:{s1.len_of_result}')
如何使用@property decorator
给class的属性赋值?
我的代码如下。我想计算 s1.result
的长度,同时给 s1.result
赋值。我必须编写代码才能使 s1.result
变为 None
。我该如何修改代码:
import numpy as np
class MyClass:
def __init__(self):
pass
@property
def result(self):
pass
@result.setter
def result(self, value):
self.len_of_result = len(value)
if __name__ == '__main__':
s1 = MyClass()
s1.result = np.arange(100)
print(f's1.result:{s1.result}')
print(f's1.len_of_result:{s1.len_of_result}')
结果是:
s1.result:None
s1.len_of_result:100
我期望的结果是:
s1.result:[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99]
s1.len_of_result:100
我找到了另一种方法:
import numpy as np
class MyClass:
def __init__(self):
self.result = []
@property
def len_of_result(self):
return self.result.__len__()
if __name__ == '__main__':
s1 = MyClass()
print(f's1.len_of_result:{s1.len_of_result}')
s1.result = np.arange(100)
print(f's1.result:{s1.result}')
print(f's1.len_of_result:{s1.len_of_result}')
s1.len_of_result:0
s1.result:[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99]
s1.len_of_result:100
下面是你想要的吗?
import numpy as np
class MyClass:
def __init__(self):
self._result = None
@property
def result(self):
return self._result
@result.setter
def result(self, value):
self._result = value
self.len_of_result = len(value)
if __name__ == '__main__':
s1 = MyClass()
s1.result = np.arange(100)
print(f's1.result:{s1.result}')
print(f's1.len_of_result:{s1.len_of_result}')