1、类属性
作用:用于多个对象之间的数据共享
class Person:
num = 0
son_01 = Person()
son_02 = Person()
print(son_01.num)
print(son_02.num)
与实例属性的区别为:
class Person:
def __init__(self, num):
self.num = num
son_01 = Person(5)
son_02 = Person(6)
print(f'son_01输出的num值为{son_01.num}')
print(f'son_02输出的num值为{son_02.num}')
类属性和实例属性的区别为:类属性再实例化时无需传入参数,且类属性在各个实例之间数据共享
2、类方法 可以由类发起调用 也可以由实例对象发起调用
作用:用来操作类属性
在这里插入代码片class Person:
num = 0
def __init__(self, son_num):
self.son_num = son_num
Person.num += 1
@classmethod
def print_persons(cls):
print(f'总数为:{cls.num}')
son_01 = Person(5)
son_02 = Person(5)
Person.print_persons()
son_02.print_persons()
3、继承:
作用:父类中有子类想要用的方法、属性
class Person:
def __init__(self, name):
self.name = name
def print_info(self):
print(f'父类中打印的名字为{self.name}')
class Son(Person):
pass
sun = Son('李四')
sun.print_info()
定义了一个空的子类,在实例化时,调用了父类的方法
重写父类的属性及方法,以下方法为全部重写,即覆盖了父类中原有同名方法
class Son(Person):
def __init__(self, name):
self.name = name
def print_info(self):
print(f'子类中打印的名字为{self.name}')
sun = Son('李四')
sun.print_info()
多态:既有继承,又有重写,即为多态
当父类同名方法有一部分可用时,无需全部重写,只需重写子类自己执行的代码即可,此时,使用super()
class Person:
def __init__(self, name):
self.name = name
def print_info(self):
print(f'父类中打印的名字为{self.name}')
class Son(Person):
def print_info(self):
super().print_info() # 调用父类的方法
print(f'子类中打印的名字为{self.name}')
sun = Son('李四')
sun.print_info()