類變量和實例變量
-
類變量可以被所有的實例使用
-
所有實例得到的類變量相同
-
實例變量屬於實例
Class SomeClass:
variable_1 = “ This is a class variable”
variable_2 = 100 #this is also a class variable.
def __init__(self, param1, param2):
self.instance_var1 = param1
#instance_var1 is a instance variable
self.instance_var2 = param2
#instance_var2 is a instance variable
類變量
>>> obj1 = SomeClass("some thing", 18)
#creating instance of SomeClass named obj1
>>> obj2 = SomeClass(28, 6)
#creating a instance of SomeClass named obj2
>>> obj1.variable_1
'a class variable'
>>> obj2.variable_1
'a class variable'
實例變量
>>> obj1.instance_var1
'some thing'
>>> obj2.instance_var1
28
類函數和實例函數
實例函數
class SomeClass:
def create_arr(self): # An instance method
self.arr = []
def insert_to_arr(self, value): #An instance method
self.arr.append(value)
>>> obj3 = SomeClass()
>>> obj3.create_arr()
>>> obj3.insert_to_arr(5)
>>> obj3.arr
[5]
類函數
class SomeClass:
def create_arr(self): # An instance method
self.arr = []
def insert_to_arr(self, value): #An instance method
self.arr.append(value)
@classmethod
def class_method(cls):
print("the class method was called")
不用實例化,直接用類名調用類函數
SomeClass.class_method()
self
class SomeClass:
def __init__(self):
self.arr = []
#All SomeClass objects will have an array arr by default
def insert_to_arr(self, value):
self.arr.append(value)
obj1 = SomeClass()
obj2 = SomeClass()
obj1.insert_to_arr(6)
Python將上面obj1調用轉爲如下
SomeClass.inseart_to_arr(obj1, 6)
參考資料:
https://medium.com/quick-code/understanding-self-in-python-a3704319e5f0