看例子看例子:
>>>
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 也提供預設的成員逐一...