1,面向对象语言三大特性:
封装 继承 多态
(主要考虑继承!其它两个比较弱化)
2,多态
一种事物多种形态 (前提:子类是父类的另外一个形态)
3,公有属性继承问题:
父类的公有属性也会继承给子类对象,但是要注意__init__重写的重写问题
class Dog(Animal):
def __init__(self): # __init__是一个初始化方法,重写了父类的__init__导致父类的age属性访问不到
# Animal.__init__(self)
# super().__init__()
super(Dog, self).__init__() # 如果想要把父类的属性也继承过来(解决重写的问题),需要调用到到父类的__init__方法,并且最好写在最开始到的位置
self.name = "小狗"
self.age = 0
4,了解类属性和实例属性的概念
类属性 指的是类对象的属性
类属性的定义:在类里面,在方法之外 定义的,不用带self
特点:类属性在各个对象之间共享
实例属性 指的是实例对象的属性
特点:在各个对象之间互相独立,互不干扰
5,掌握类属性和实例属性的访问和修改方法
类名.属性名
对象名.属性名
类属性的访问和修改:
1、类名.类属性名(最最常用) Dog.num
2、对象名.类属性名(不推荐使用)
3、对象名.__class__.类属性名(了解)
4、在类方法中, cls.类属性名
实例属性
def __init__(self):
self.age = 10 # 实例属性 特点:在各个实例对象之间的互不干扰的,互相独立的
6,掌握类方法的使用
@classmethod
Def fn(cls):
xxx
类名.方法名() Dog.fn()
类方法格式:
@classmethod # 装饰器、修饰器
def 类方法名(cls): # 类方法, 用来处理类属性
pass
调用的格式:
1、类名.类方法名()
2、对象名.__class__.方法名()
3、在类方法中 cls.类方法名()
7,掌握静态方法的使用
@staticmethod
Def fn():
xxx
类名.方法名() Dog.fn()
8,实例方法,类方法,静态方法
三种方法,实例方法最常用!