[英]Add all constructor parameters as instance attributes to class in PyCharm
[英]python class attributes as instance constructor default parameters
我想使用 class 屬性作為實例構造函數的默認參數,但似乎 python 不支持它。 有人可以解釋原因或更正下面的代碼以便它可以工作嗎?
好的,但從我的角度來看不夠明確
class B:
class_size = 4
def __init__(self):
self.size = B.class_size
我想要什么(不起作用)
class A:
class_size = 4
def __init__(self,size = A.a_size):
self.size = size
使用上述聲明 python 抱怨:
def __init__(self,size = A.a_size): NameError: name 'A' is not defined
在構建 class 命名空間時, A
不是名稱。 只需取消限定名稱( A.class_size
-> class_size
):
class A:
class_size = 4
def __init__(self, size=class_size):
self.size = size
但是,上面沒有考慮 inheritance,如果您想覆蓋子類中的默認值。 為此,您只需要手動查找構造函數中的默認值:
class A:
default_size = 4
def __init__(self, size=None):
if size is None:
size = self.default_size
self.size = size
class B(A):
default_size = 15
print(A().size)
print(B().size)
print(B("yes").size)
產出
4
15
yes
如果None
否則將是您參數的有效值,您可以選擇一個標記值:
NOTSET = object()
# ...
def __init__(self, size=NOTSET):
if size is NOTSET:
# ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.