在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 如何理解@classmethod下的cls參數(shù)?

如何理解@classmethod下的cls參數(shù)?

示例代碼如下

class Foo:
    __v = None
    @classmethod
    def get_instance(cls):
        if cls.__v:
            return cls.__v
        else:
            cls.__v = Foo()
            print(cls)
            return cls.__v

obj = Foo.get_instance()
obj2 = Foo.get_instance()
def main():
    print(obj)
    print(obj2)

以這個(gè)單例模式舉例,當(dāng)?shù)谝淮握{(diào)用Foo.get_instance()使代碼進(jìn)入else分支,第二次調(diào)用進(jìn)入if分支。在這個(gè)過程obj和obj2是指向的同一個(gè)對(duì)象,即else分支中Foo()得到的對(duì)象。我知道cls參數(shù)是Foo類這個(gè)對(duì)象,而且Foo類中有__v這個(gè)成員,問題是它是如何當(dāng)再次調(diào)用get_instance時(shí)保證cls.__v不是None的。
而且通過cls不是應(yīng)該訪問不到__v的么?
圖片描述

回答
編輯回答
尤禮

__v 是放在類下的,又不是放在實(shí)例下來的?!邦悺焙汀皩?shí)例”本來就是兩個(gè)東西。

還有:

class Foo(object): 
    pass

這樣寫。

2018年3月1日 12:43