[英]The usage of a static method in Python
我最近遇到了一個用於制作條形圖的代碼,我想知道為什么 python 中的函數需要一個靜態方法。 最重要的是為什么 self.function_name 用於靜態方法。 這是代碼:
class Foo :
@staticmethod
def make_bar_plot(values, labels, title, ylabel='Activity Count', step=10):
x_pos = np.arange(len(labels))
plt.bar(x_pos, values, align='center', alpha=0.5)
plt.xticks(x_pos, labels)
plt.yticks(np.arange(0, max(values) + step, step))
plt.ylabel(ylabel)
plt.title(title)
for index, val in enumerate(values):
plt.text(x=index, y=val+1, s=f'{val}')
plt.show()
def get_daywise_activity_stats(self, event_name, no_of_days):
query = """select edate, count(*)
from %s
where ip_address not in (
select distinct(ip_address)
from activity_classic_class_section_start
where edate <'2019-12-31')
group by edate order by edate desc limit %s;
"""%(event_name, no_of_days)
event_dict = {ele[0].strftime("%m/%d/%Y"):ele[1] for ele in self.rs_conn.query(query)}
print (event_dict)
labels = list(event_dict.keys())
values = list(event_dict.values())
self.make_bar_plot(values, labels, 'Daywise_activity_stats -> '+event_name)
靜態方法在沒有 self.function_name 和 class_name.function_name 的情況下不起作用,還是我在這里遺漏了一些重要的東西?
您還可以通過以下方式調用make_bar_plot
:
Foo.make_bar_plot(values, labels, 'Daywise_activity_stats -> '+event_name)
它將與您的代碼相同。 您需要引用您的類 - 您可以通過self
來self
,因為類的每個實例都將引用make_bar_plot
靜態方法,或者通過提供類名FOO
。 結果將是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.