类变量和实例变量
-
类变量可以被所有的实例使用
-
所有实例得到的类变量相同
-
实例变量属于实例
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