zoukankan      html  css  js  c++  java
  • 面向对象进阶

    今日内容:

      1、__slots__魔法

      2、静态方法和类方法

      3、继承

      4、嵌套函数

      5、装饰器

    ---------------------------------------------------------------------------------------------------------------------

    1、__slots__魔法

             Python是一门动态语言(如下所示:),通常,动态语言允许我们在程序运行时给对象绑定新的属性或方法,当然也可以对已经绑定的属性和方法进行解绑定。如果限定自定义类型的对象只能绑定某些属性,可以通过在类中定义__slots__变量来进行限定。

    2、静态方法和类方法

    静态方法和类方法都是通过给类发消息来调用的

      1)静态方法:如果类中需要非该类成员存在,则可以使用静态调用的方法@staticmethod

    案例一:

      #  三个函数求正方形的面积

    ---------------------------------------------------------------------------------------------------------------------------------

    class Name(object):
      def __init__(self,a,b,c,d):  # 定义四条边
        self.a = a
        self.b = b
        self.c = c
        self.d = d
      @staticmethod
      def is_valid(a,b,c,d):
        for i in [b,c,d]:
          if i !=a:     # if判断四条边是否相等
            return False
        else:
          return True
      def area(self):
        if res == True:
          area_ = self.a * self.b   #求正方形面积
            return area_
    def main():
      name = Name(2,2,2,2)
      res = name.is_valid(2,2,2,2)
      if res == True:
        print(name.area())
    main()

    ---------------------------------------------------------------------------------------------------------------------------------

    2)类方法:在类方法中的第一个参数约定名为cls,它代表的是当前类相关的信息的对象

    案例二:

      """数字时钟"""

      # @classmethod:获取自身类(cls)中的属性,并且可以更改.
      # classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等

    ---------------------------------------------------------------------------------------------------------------------------------

    from time import time, localtime, sleep

    class Clock(object):

      def __init__(self, hour=0, minute=0, second=0):
        self._hour = hour
        self._minute = minute
        self._second = second

      @classmethod
      def now(cls):
        ctime = localtime(time())
        return cls(ctime.tm_hour, ctime.tm_min, ctime.tm_sec)

      def run(self):   """走字"""
      self._second += 1
      if self._second == 60:
        self._second = 0
        self._minute += 1
        if self._minute == 60:
          self._minute = 0
          self._hour += 1
          if self._hour == 24:
            self._hour = 0

      def show(self):   """显示时间"""
        return '%02d:%02d:%02d' %
          (self._hour, self._minute, self._second)


    def main():    # 通过类方法创建对象并获取系统时间


      clock = Clock.now()
      while True:
        print(clock.show())
        sleep(1)
        clock.run()


    if __name__ == '__main__':
      main()

    ---------------------------------------------------------------------------------------------------------------------

    3、继承

    用子类对象去替换掉一个父类对象,示例如下:

    案例三:

    ---------------------------------------------------------------------------------------------------------------------

    class A(object):
      def __init__(self,a1):
        self.a = 1000
        self.a1 = a1
      def sum(self):
        sum_ = self.a+self.a1
        return sum_
    class B(A):
      def __init__(self,a1,b1):
        self.b1 =b1
        A.__init__(self,a1)
      def Print(self):
        res =self.sum()
        print(res)
    def main():
      b=B(100,'111')
      b.Print()
    main()

    ---------------------------------------------------------------------------------------------------------------------

    4、嵌套函数

    python允许创建嵌套函数,也就是说可以在函数里面定义函数。示例如下:

    例1:

    例2:

    5、装饰器

    python装饰器就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。示例如下:

    例1:

    --------------------------------------------------------------------------------------------------------------------

    '''
    定义了一个函数deco,函数无参
    '''
    def deco(func):
      print("HELLO1")
      def warp():
        return func()
      return warp

    @deco
    def Joker():
      print('hello')

    Joker()

    --------------------------------------------------------------------------------------------------------------------

    例2:

    --------------------------------------------------------------------------------------------------------------------

    '''
    定义了一个函数deco,函数有参
    '''
    def deco(func):
      def warp(H):
        print("Joker")
        return func(H)
      return warp

    @deco
    def Joker(name):
      print('hello %s'%name)

    Joker('huwang')

    ------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    apk反编译
    Hybrid App
    Hybrid App
    Hybrid App
    Hybrid App 介绍
    android-adb
    .java生成dex文件
    android Activity launch mode 知识点总结
    2018.10.15学习总结
    2018.10.12
  • 原文地址:https://www.cnblogs.com/honey-2019/p/11323450.html
Copyright © 2011-2022 走看看