复习2.1内容--类的继承--类函数--静态函数

# -*- coding:utf-8 -*-
1. 类的继承
'''
    1.子类继承自父类,子类拥有父类的所有属性和函数
    2.子类继承自父类,子类可以拥有自己独有的属性和函数,父类不可以使用子类独有的属性和函数
    3.子类继承父类,子类可以重写父类的函数
        3.1 完全重写,在子类中重新定义一个和父类函数名称一样的函数,但是这个函数执行的功能和父类中的函数完全没有关系
        3.2 部分重写,在子类中重新定义一个和父类函数名称一样的函数,在该函数中需要保留父类函数的功能,先调用父类中的函数,再添加额外的功能代码
'''

2.类函数、静态函数
'''
    对象函数:对象函数直接在类中声明即可,不需要添加装饰器,对象函数只能由对象调用执行,也可由类调用,但是在调用时,需要将一个对象作为参数进行传递,对象函数中有一个self参数,self指调用该函数的对象,例如:对象A调用该函数,self 指对象A 对象B调用该函数,self指对象B
    类函数:类函数声明前。需要添加装饰器@classmethod,类函数可以由类和对象调用执行,在类函数中有一个cls参数,cls指类型,类调用cls指这个类,对象调用cls指对象类型
    静态函数:静态声明前,需要添加装饰器@staticmethod,静态函数可以由类和对象调用执行,在静态函数没有隐形参数,如需要传递参数,在参数列表中声明即可
'''


3.__slots__ 限定可以添加那些属性,只限定当前类的对象,对子类没有作用

class People(object):

    # __slots__ 限定可以添加那些属性,只限定当前类的对象,对子类没有作用
    __slots__ = ('name', 'age')

    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    def run(cls):
        print('running.....')

    @staticmethod
    def eat():
        print('早上吃饭了吗?')

    def sleep(self):
        print('昨天睡觉了吗?')

4.Man继承自People类

注意:super(Man, self).__init__(name, age)初始化函数中,继承父类的属性,也拥有自己的属性

class Man(People):

    def __init__(self, name, age, height):

        super(Man, self).__init__(name, age)
        self.height = height

5.调用  执行

People.run()
p1 = People('张三', 22)
p1.run()

People.eat()
p1.eat()


People.sleep(p1)
p1.sleep()


m = Man('李四',22,190)

6.完整代码如下

# -*- 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('running.....')

    @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)

7,执行结果为:

running.....
running.....
早上吃饭了吗?
早上吃饭了吗?
昨天睡觉了吗?
昨天睡觉了吗?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值