引數的疑問

2021-08-21 13:29:14 字數 990 閱讀 1623

class foo:

def __new__(cls, *args, **kwargs):

print("execute new")

print("*args is ", args)

return super().__new__(cls)

def __init__(self, value):

print('ececute init')

print("value is ", value)

self.value = value

class goo(foo):

def __new__(cls, *args, **kwargs):

print("*args is ", args)

return super().__new__(cls, *args, **kwargs)

def __init__(self, a, b):

super().__init__(a)

self.a = a

self.b = b

g = goo(1,2)

# out is:

# /usr/local/bin/python3.6 /users/zrb/pycharmprojects/mrhu/studing/singleton.py

# *args is (1, 2)

# execute new

# *args is (1, 2)

# ececute init

# value is 1

引數只能傳必要的,多乙個少乙個都不行。
new方法的第乙個引數一般都是cls, init方法的引數一般都是self

為什麼說一般呢

因為還有元類

元類的new方法的第乙個引數是mtc, init方法的第乙個引數是cls

關於 retainCount 的疑問

我在 main.m 裡寫了三個測試例子,就是不明白為什麼輸出的都是 1 別人幫忙測試了下,輸出的是額外的超大的值 nsstring str1 welcome nslog d str1 retaincount nsstring str2 nsstring stringwithstring you ns...

關於scanf的疑問

scanf函式是從標準輸入流 stdin 讀取資料,按照格式說明引數,將資料寫入引數位址所在空間,標準輸入流預設的是鍵盤輸入流,但是,由於作業系統的緩衝區管理機制,從鍵盤上輸入的資料不是直接被scanf函式讀取的,而是暫存在記憶體緩衝區,只有遇到回車鍵的時候,scanf函式才會開始工作,並且,最後輸...

關於sort 的疑問?

對於不同型別的資料從小到大排序可以直接用sort 函式排,但是如果是從大到小排序,就得寫乙個比較函式了,怎麼辦呢?我的第一想法就是利用函式模板寫乙個cmp 函式,如下 所示,但是這串 是通不過編譯的,include include using namespace std template bool ...