# -*- coding: utf-8 -*-
# 类的继承
'''
1.子类继承自父类,子类拥有父类的所有属性和函数
2.子类继承自父类,子类可以拥有自己独有的属性和函数,父类不可以使用子类独有的属性和函数
3.子类继承自父类,子类可以重写父类的函数
3.1 完全重写,在子类中重新定义一个和父类函数名称一样的函数,但是这个函数执行的功能和父类中的函数完全没有关系
3.2 部分重写,在子类中重新定义一个和父类函数名称一样的函数,在该函数中需要保留父类函数的功能,先调用父类中的函数,再添加额外的功能代码
'''
# 类函数、静态函数
'''
对象函数:对象函数直接在类中声明即可,不需要添加装饰器,对象函数只能由对象调用执行,也可由类调用,但是在调用时,需要将一个对象作为参数进行传递,对象函数中有一个self参数,self指调用该函数的对象,例如:对象A调用该函数,self指对象A 对象B调用该函数,self指对象B
类函数:类函数声明前。需要添加装饰器@classmethod,类函数可以由类和对象调用执行,在类函数中有一个cls参数,cls指类型,类调用cls指这个类,对象调用cls指对象类型
静态函数:静态声明前,需要添加装饰器@staticmethod,静态函数可以由类和对象调用执行,在静态函数没有隐形参数,如需要传递参数,在参数列表中声明即可
'''
class People(object):
# __slots__ 限定可以添加哪些对象属性,只限制当前类的对象,对子类没有作用
__slots__ = ('name','age')
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def run(cls):
print(cls)
@staticmethod
def eat():
print('早上吃饭了吗?')
def sleep(self):
print('昨天睡觉了吗?')
class Man(People):
def __init__(self, name, age, height):
super(Man, self).__init__(name, age)
self.height = height
People.run()
p1 =People('张三',22)
p1.run()
People.eat()
p1.eat()
People.sleep(p1)
p1.sleep()
m = Man('李四',22,190)
# 类的继承
'''
1.子类继承自父类,子类拥有父类的所有属性和函数
2.子类继承自父类,子类可以拥有自己独有的属性和函数,父类不可以使用子类独有的属性和函数
3.子类继承自父类,子类可以重写父类的函数
3.1 完全重写,在子类中重新定义一个和父类函数名称一样的函数,但是这个函数执行的功能和父类中的函数完全没有关系
3.2 部分重写,在子类中重新定义一个和父类函数名称一样的函数,在该函数中需要保留父类函数的功能,先调用父类中的函数,再添加额外的功能代码
'''
# 类函数、静态函数
'''
对象函数:对象函数直接在类中声明即可,不需要添加装饰器,对象函数只能由对象调用执行,也可由类调用,但是在调用时,需要将一个对象作为参数进行传递,对象函数中有一个self参数,self指调用该函数的对象,例如:对象A调用该函数,self指对象A 对象B调用该函数,self指对象B
类函数:类函数声明前。需要添加装饰器@classmethod,类函数可以由类和对象调用执行,在类函数中有一个cls参数,cls指类型,类调用cls指这个类,对象调用cls指对象类型
静态函数:静态声明前,需要添加装饰器@staticmethod,静态函数可以由类和对象调用执行,在静态函数没有隐形参数,如需要传递参数,在参数列表中声明即可
'''
class People(object):
# __slots__ 限定可以添加哪些对象属性,只限制当前类的对象,对子类没有作用
__slots__ = ('name','age')
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def run(cls):
print(cls)
@staticmethod
def eat():
print('早上吃饭了吗?')
def sleep(self):
print('昨天睡觉了吗?')
class Man(People):
def __init__(self, name, age, height):
super(Man, self).__init__(name, age)
self.height = height
People.run()
p1 =People('张三',22)
p1.run()
People.eat()
p1.eat()
People.sleep(p1)
p1.sleep()
m = Man('李四',22,190)