python 關於類的幾點基礎知識

2021-07-25 15:15:59 字數 3003 閱讀 4752

看例子看例子:

>>> 

class

noobject

():...

pass

...>>>

class

fromobject

(object):

...

pass

...

>>> no_object = noobject()

>>> from_object = fromobject()

>>> type(no_object)

>>> type

(from_object)

python3的類都已經隱式繼承了object,所以,python3中寫不寫繼承object都是沒有區別的。

類變數:定義在類的定義之。例如:

class

a: class_variable = "i am class variable"

例項變數:以self.開頭,在建構函式中常見。例如:

class

a:def

__init__

(self, a):

self.instance_variable = a

defprint_a

(self):

print(self.instance_variable)

例項和類都可以訪問類變數,可以通過類名訪問,也可以通過例項名訪問。例項變數只能通過例項訪問。例如:

class

a: class_variable = "i am class variable"

# 類變數

def__init__

(self, a):

self.instance_variable = a # 例項變數

defprint_a

(self):

print("i am {}".format(self.instance_variable))

a = a("instance_variable")

print("use class: class variable is {}".format(a.class_variable)) # use class: class variable is i am class variable

print("use instance: class variable is {}".format(a.class_variable)) # use instance: class variable is i am class variable

a.print_a() # i am instance_variable

a.print_a() # 報錯

a.print_a(a) # i am instance_variable

類方法:第乙個引數是cls(類本身),操作物件是類變數,可以使用@classmethod宣告。

例項方法:第乙個引數是self(例項),操作物件是例項變數。

靜態方法:引數是傳入的,操作物件是傳入的引數,可以使用@staticmethod宣告。

看例子:

class

a: name = "class_variable"

# 類變數

# 建構函式

def__init__

(self, a):

self.a = a # 靜態變數

# 類方法

@classmethod

defclass_method

(cls):

print("i am class method")

print("my class variable is {}".format(cls.name))

# 例項方法

definstance_method

(self):

print("i am instance method")

print("my a is {}".format(self.a))

# 靜態方法

@staticmethod

defstatic_method

(a, b):

print("i am static method")

print("my a and b is {}, {}".format(a, b))

print("class variable name is {}".format(a.name)) # class variable name is class_variable 通過類訪問類變數

a.class_method() # i am class method 類呼叫類方法

a.instance_method() # 類呼叫例項方法報錯 沒有傳入例項

instance_a = a("a")

a.instance_method(instance_a) # i am instance method 類傳入例項呼叫例項方法

a.static_method("class_a", "class_b") # my a and b is class_a, class_b 類呼叫靜態方法

instance_a = a("a")

print("class variable name is {}".format(instance_a.name)) # class variable name is class_variable 通過例項訪問類變數

instance_a.class_method() # i am class method 例項呼叫類方法

instance_a.instance_method() # i am instance method 例項呼叫例項方法

instance_a.static_method("instance_a", "instance_b") # my a and b is instance_a, instance_b 例項呼叫靜態方法

python關於類的基礎

無需例項化,可以通過類直接呼叫的方法,但是方法的第乙個引數接收的一定是類本身 1 在方法上面新增 classmethod 2 方法的引數為 cls 也可以是其他名稱,但是一般預設為cls 3 cls 指向 類物件 5 應用場景 當乙個方法中只涉及到靜態屬性的時候可以使用類方法 類方法用來修改類屬性 ...

關於python函式幾點注意

有時候為了先構架好整個框架然後在逐步新增各種功能,這時候可能就會使用到空函式先佔位,這裡用到的就是pass語句 def nop pass defage judge age if age 18 pass對於函式輸入輸出型別錯誤後可能會造成麻煩,為了避免,經常會在函式中限制輸入輸出模擬,這招也是在做題時...

關於C 的類的幾點注意點

析構函式絕對不會有返回值,也沒有任何引數,絕對不可能過載 析構函式用於釋放在建構函式或物件生命週期內分配的資源,在物件結束生命後會自動呼叫析構函式來善後。感覺一般都是我們在構造物件的時候,在物件內部要手動申請一塊記憶體,然後我們在析構函式中需要將其釋放掉 即使是自己定義的類,c 也提供預設的成員逐一...