2022年 11月 5日

python 类中的变量、方法

一. python 类中的变量分为类变量,实例变量,self

  1. # coding:utf-8
  2. class A(object):
  3. date = '20201215' # 类变量
  4. def __init__(self):
  5. self.name = 'Stephen' # 实例变量
  6. def __str__(self):
  7. return self.date + ' ' + self.name
  8. new = A()
  9. print(new)
  10. print(new.date)
  11. print(new.name)
  12. 20201215 Stephen
  13. 20201215
  14. Stephen

1. 类变量

在类中方法之外定义的变量,在类中使用,不需要实例化,通过self.xx或者class.xx就可使用,实例对象可通过对象.xx进行使用。

2. 实例变量

在类中方法内定义的变量,通过self.xx就可使用,实例对象可通过对象.xx进行使用。

3. self

self就是本类对象

二. 实例方法,静态方法,类方法

  1. class Date:
  2. day = 10 # 类变量
  3. def __init__(self, year, month, day): # 构造函数
  4. self.year = year
  5. self.month = month
  6. self.day = day
  7. def __str__(self):
  8. return ("{year}-{month}-{day}").format(year=self.year, month=self.month, day=self.day)
  9. def yesterday(Date):
  10. Date.day -= 1
  11. def print_year(self, number): # 实例方法
  12. print(self.year + number)
  13. @property
  14. def weather(self): # 属性方法
  15. return 'rainny'
  16. @staticmethod # 静态方法:校验输入值类型和大小是否符合咱们的类型。
  17. def var_str(date_str):
  18. year, month, day = tuple(date_str.split("-"))
  19. if 0 < int(year) and 0 < int(month) <= 12 and 0 < int(day) < 32:
  20. return True
  21. else:
  22. return False
  23. @classmethod # 类方法
  24. def class_method(cls, date_str):
  25. if cls.var_str(date_str): #这里是调用静态方法,注意要用cls.静态方法,原理和实例方法中的self一样,自己可以试试,否则是不能读取的。
  26. year, month, day = tuple(date_str.split("-"))
  27. return cls(int(year), int(month), int(day))
  28. new_day = Date.class_method("2018-10-10")
  29. print(new_day)
  30. # 打印结果
  31. 2018 - 10 - 10

1. 实例方法

实例方法的是类中最常用的方法,方法本身带self参数,非本类中实例化后才能使用该方法,本类中调用实例方法通过self.xx()

2. 静态方法

  • 静态方法需要加@staticmethod装饰器
  • 静态方法不能调用类变量,类方法,实例变量及实例方法,但是实例方法可以调用静态方法,通过self.XX(),类方法调用静态方法也需要实例化对象后才能使用
  • 静态方法调用类变量,类方法,实例变量及实例方法,需要实例化对象,然后通过对象去调取

3. 类方法

  • 类方法需要加@classmethod装饰器
  • 类方法无需实例化就可调用
  • 在类中类方法调用实例方法和实例变量,需要先实例化类对象,然后才能调用
  • 在类中类方法调用类变量,可直接通过cls.xx的方式直接调用

4. 属性方法

类属性方法无传参且必须有返回值,实例化对象调用的时候通过调取属性的方式进行调用 

三. 构造函数,析构函数

  1. class Person(): #定义类
  2. def info(self): #实例方法
  3. self.name='xiaoming'
  4. print("shi li fang fa")
  5. def __del__(self): #析构函数,类销毁自动执行
  6. print("类销毁的时候就执行")
  7. zwj=Person()
  8. zwj.info()
  9. del zwj #销毁类
  10. print("========")
  11. shi li fang fa
  12. 类销毁的时候就执行
  13. ========

构造函数,实例化就自动调用该方法,一般该方法会放一些属性或者初始化的东西;

析构函数,类实例被销毁的时候自动执行

参考:python_类里的方法及变量,python3:类方法,静态方法和实例方法以及应用场景,一张图了解python 类方法与类变量 类变量与实例变量