Python是一門面向?qū)ο蟮木幊陶Z言,類是Python中面向?qū)ο蟮幕靖拍睢T陬悆?nèi)部,變量分為類變量和實(shí)例變量兩種。
類變量是在整個(gè)類中都可以訪問的變量,它不屬于任何一個(gè)實(shí)例,而是屬于類。使用類名或?qū)嵗伎梢栽L問到它。類變量通常會被定義在類的最頂層。下面是一個(gè)例子:
class MyClass: class_var = 0 # 這是一個(gè)類變量 def __init__(self, inst_var): self.inst_var = inst_var # 這是一個(gè)實(shí)例變量
實(shí)例變量是在類實(shí)例化之后,每個(gè)實(shí)例所擁有的變量。它只能通過實(shí)例名來訪問。下面是一個(gè)例子:
class MyClass: class_var = 0 # 這是一個(gè)類變量 def __init__(self, inst_var): self.inst_var = inst_var # 這是一個(gè)實(shí)例變量 my_object = MyClass(1) print(my_object.inst_var) # 輸出 1
當(dāng)類變量和實(shí)例變量同名時(shí),實(shí)例變量會屏蔽掉類變量。也就是說,如果通過實(shí)例名來訪問這個(gè)同名變量,會訪問到實(shí)例變量;如果通過類名來訪問這個(gè)同名變量,會訪問到類變量。下面是一個(gè)例子:
class MyClass: class_var = 0 # 這是一個(gè)類變量 def __init__(self, class_var): self.class_var = class_var # 這是一個(gè)實(shí)例變量,與類變量同名 my_object = MyClass(1) print(my_object.class_var) # 輸出 1 print(MyClass.class_var) # 輸出 0
總之,在Python中,我們可以定義類變量和實(shí)例變量,類變量在整個(gè)類中都可以訪問,而實(shí)例變量只能在實(shí)例中訪問。在使用中,需要注意同名變量的問題,以免產(chǎn)生名字沖突。