[英]Shared class int across subclasses
我想要一個每次實例化子類時遞增的計數器。 我將如何實現這一點,以便下面的最后一條語句評估為 True:
class Abstract(ABC):
counter = 0
class A(Abstract):
pass
class B(Abstract):
pass
a = A()
b = B()
a.counter += 1
b.counter == 1
目前每個子類都有自己的計數器,而不是共享超類中概述的計數器。
這對你有用嗎?
global_counter = 0
class Abstract:
def __init__(self):
global global_counter
global_counter += 1
class A(Abstract):
def __init__(self):
super().__init__()
class B(Abstract):
def __init__(self):
super().__init__()
a = A()
b = B()
print(global_counter) # (output: 2)
所以我已經實現了幾種不同的方法來實現我想要的:
我最喜歡的(最少的額外部分並且最符合我編寫對象的方式)是最后一種方法。 上面的內容轉化為:
lass Abstract(ABC):
counter = 0
@staticmethod
def increment():
Abstract.counter += 1. # instead of cls.counter += 1
class A(Abstract):
pass
class B(Abstract):
pass
a = A()
b = B()
a.increment()
b.increment()
a.counter == b.counter # now true.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.