Python_day12_昨日回顾.txt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. 1、类
  2. 属性
  3. 类的属性
  4. - 数据属性
  5. - 函数属性
  6. obj.__dict__
  7. 实例属性
  8. - 数据属性
  9. obj.__dict__
  10. 所有的数据属性可以动态改变
  11. 2、方法
  12. - 绑定方法
  13. 参数,必须定一个位置参数, 通常叫 self
  14. 类的实例调用时称为绑定方法
  15. 那个实例调用时 self 就是这个实例
  16. - 类方法
  17. 首先需要使用 classmethod 装饰器装饰的函数
  18. 也必须有一个位置参数,通常 cls
  19. 调用
  20. - 一般是使用 类.方法名
  21. 也可以使用 类的实例名.方法名
  22. 无论谁调用, cls都是一个类对象
  23. - 静态方法
  24. 需要使用 staticmethod 装饰器
  25. 此时就是一个普通函数
  26. 调用
  27. 使用
  28. - 类名.方法名
  29. - 实例名.方法名
  30. 3、继承
  31. class A():
  32. pass
  33. class B(A):
  34. pass
  35. A 称为父类(超类)
  36. B 称为子类
  37. ###================================================###
  38. 一:属性:
  39.   尽量把需要用户传入的属性作为实例属性,而把同类都一样的属性作为类属性。实例属性在每创造一个实例时都会初始化一遍,不同的实例的实例属性可能不同,不同实例的类属性都相同。从而减少内存。
  40.   1:实例属性:
  41.     最好在__init__(self,...)中初始化
  42.     内部调用时都需要加上self.
  43.     外部调用时用instancename.propertyname
  44.   2:类属性:
  45.     在__init__()外初始化
  46.     在内部用classname.类属性名调用
  47.     外部既可以用classname.类属性名又可以用instancename.类属性名来调用
  48.   3:私有属性:
  49.     1):单下划线_开头:只是告诉别人这是私有属性,外部依然可以访问更改
  50.     2):双下划线__开头:外部不可通过instancename.propertyname来访问或者更改
  51.       实际将其转化为了_classname__propertyname
  52. 二:方法
  53.   1:普通类方法:
  54.     def fun_name(self,...):
  55.       pass
  56.     外部用实例调用
  57.   2:静态方法:@staticmethod
  58.       不能访问实例属性!!! 参数不能传入self!!!
  59.       与类相关但是不依赖类与实例的方法!!
  60.   3:类方法:@classmethod
  61.       不能访问实例属性!!! 参数必须传入cls!!!
  62.       必须传入cls参数(即代表了此类对象-----区别------self代表实例对象),并且用此来调用类属性:cls.类属性名
  63.   *静态方法与类方法都可以通过类或者实例来调用。其两个的特点都是不能够调用实例属性