一. python 类中的变量分为类变量,实例变量,self
- # coding:utf-8
-
- class A(object):
- date = '20201215' # 类变量
-
- def __init__(self):
- self.name = 'Stephen' # 实例变量
-
- def __str__(self):
- return self.date + ' ' + self.name
-
-
- new = A()
- print(new)
- print(new.date)
- print(new.name)
-
- 20201215 Stephen
- 20201215
- Stephen
1. 类变量
在类中方法之外定义的变量,在类中使用,不需要实例化,通过self.xx或者class.xx就可使用,实例对象可通过对象.xx进行使用。
2. 实例变量
在类中方法内定义的变量,通过self.xx就可使用,实例对象可通过对象.xx进行使用。
3. self
self就是本类对象
二. 实例方法,静态方法,类方法
- class Date:
- day = 10 # 类变量
-
- def __init__(self, year, month, day): # 构造函数
- self.year = year
- self.month = month
- self.day = day
-
- def __str__(self):
- return ("{year}-{month}-{day}").format(year=self.year, month=self.month, day=self.day)
-
- def yesterday(Date):
- Date.day -= 1
-
- def print_year(self, number): # 实例方法
- print(self.year + number)
-
- @property
- def weather(self): # 属性方法
- return 'rainny'
-
- @staticmethod # 静态方法:校验输入值类型和大小是否符合咱们的类型。
- def var_str(date_str):
- year, month, day = tuple(date_str.split("-"))
- if 0 < int(year) and 0 < int(month) <= 12 and 0 < int(day) < 32:
- return True
- else:
- return False
-
- @classmethod # 类方法
- def class_method(cls, date_str):
-
- if cls.var_str(date_str): #这里是调用静态方法,注意要用cls.静态方法,原理和实例方法中的self一样,自己可以试试,否则是不能读取的。
- year, month, day = tuple(date_str.split("-"))
- return cls(int(year), int(month), int(day))
-
-
- new_day = Date.class_method("2018-10-10")
- print(new_day)
- # 打印结果
- 2018 - 10 - 10
-
1. 实例方法
实例方法的是类中最常用的方法,方法本身带self参数,非本类中实例化后才能使用该方法,本类中调用实例方法通过self.xx()
2. 静态方法
- 静态方法需要加@staticmethod装饰器
- 静态方法不能调用类变量,类方法,实例变量及实例方法,但是实例方法可以调用静态方法,通过self.XX(),类方法调用静态方法也需要实例化对象后才能使用
- 静态方法调用类变量,类方法,实例变量及实例方法,需要实例化对象,然后通过对象去调取
3. 类方法
- 类方法需要加@classmethod装饰器
- 类方法无需实例化就可调用
- 在类中类方法调用实例方法和实例变量,需要先实例化类对象,然后才能调用
- 在类中类方法调用类变量,可直接通过cls.xx的方式直接调用
4. 属性方法
类属性方法无传参且必须有返回值,实例化对象调用的时候通过调取属性的方式进行调用
三. 构造函数,析构函数
- class Person(): #定义类
- def info(self): #实例方法
- self.name='xiaoming'
- print("shi li fang fa")
- def __del__(self): #析构函数,类销毁自动执行
- print("类销毁的时候就执行")
-
- zwj=Person()
- zwj.info()
- del zwj #销毁类
- print("========")
-
- shi li fang fa
- 类销毁的时候就执行
- ========
构造函数,实例化就自动调用该方法,一般该方法会放一些属性或者初始化的东西;
析构函数,类实例被销毁的时候自动执行
参考:python_类里的方法及变量,python3:类方法,静态方法和实例方法以及应用场景,一张图了解python 类方法与类变量 类变量与实例变量