回覆列表
  • 1 # 手機使用者85407945079

    先講下基本概念,你所說的未初始化的類,我把它叫做類物件,初始化的類叫例項物件。

    類物件中有個字典,存了class域下的所有函式物件。

    其中,把一個函式用@classmethod修飾後,這個函式就變成了類方法,在類物件生成的時候就例項化了,並傳入了一個引數,一般這個引數引數名為cls。

    把一個函式用@staticmethod修飾後,這個函式也是類的靜態方法,只不過不會預設傳一個cls引數。

    如果不用上述裝飾器修飾,這個函式就是類的例項方法,會預設傳一個引數,這個引數往往命名為self。

    而這個self,需要__init__函式執行一下,才會傳給例項方法,這就是初始化。

    不過,python是動態語言,上述規則基本上靠約定俗成,直譯器中沒有很強的約束。

    硬是要歸類的化,你這裡的不帶引數的方法,應該歸到staticmethod裡面,在實際使用時應該加上一個修飾符,約定這是一個staticmethod。

    至於這個方法有什麼用呢?實際上沒什麼大用,classmethod是必須的,而staticmethod不是必須的。

    我只是在把class當作用域用的時候或把class當字典用的時候,用過這個方法。

  • 2 # 使用者4522173778936

    class BaseObject(object):

    def __init__(self, **kwg):

    self.__dict__ = dict(kwg)

    content = """Tim.Wang|M|43

    Bruce.Wang|M|38

    Amay.Song|F|21"""

    def ln2obj(ln):

    name,sex,age = ln.split("|")

    return BaseObject(name=name,sex=sex,age=int(age))

    students = map(ln2obj, content.splitlines())

  • 中秋節和大豐收的關聯?
  • 氨基酸過高是由什麼造成的,有什麼危害?