簡體   English   中英

Python中靜態方法的使用

[英]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)

它將與您的代碼相同。 您需要引用您的類 - 您可以通過selfself ,因為類的每個實例都將引用make_bar_plot靜態方法,或者通過提供類名FOO 結果將是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM