Python高级学习第二课(寒假) 2022-1-4

  • super()函数

    • 在子类中调用父类的方法进行使用。
    • 能够继承封装并进行修改
      class A:
           def add(self, x):
               y = x+1
               print(y)
      class B(A):
          def add(self, x):
              super().add(x)
      b = B()
      b.add(2)  # 3
  • 动态给类添加属性和方法

    • 相当于偏函数。将一个参数固定住形成一个新函数
      # 导入相关包
      from types import MethodType
      
      # 定义一个cat类
      class Cat(object):
          def __init__(self, name):
              self.name = name
      
      if __name__ == "__main__":
          # 创建一个跑的方法
          def run(self):
              print(self.name + " run")
          # 对cat类进行实例化
          cat = Cat("kitty")
          # 动态的给cat类添加跑的方法和年龄属性
          cat.run = MethodType(run, cat)
          cat.age = "1"
          # 调用跑的方法进行打印显示
          cat.run()
          # 打印cat类的年龄属性
          print(cat.age)
    • 限制实例的属性,仅允许给对象添加特定的属性
      • 定义类时定义一个特殊的属性__slots__以限制动态添加的属性
      • 如仅允许person类动态添加name和age属性
        class person(object):
            __slots__ = ("name", "age")
  • property

    • 保护一些私密的函数。采用property进行修改。在新式类中返回属性值
    • 使用限制访问,需写set和get方法才能访问,同时可对数据进行过滤
      class Person(object):
          def __init__ (self,age):
              self.__ age = age
      
          def getAge(self):
              return self.__age
          def setAge(self, age):
              if age < 0:
                  age=0
              self._ age = age
      
    • 采用property可依旧对受限制访问的属性使用点语法。方法名为受限制的变量去掉双下划线
      class Person(object):
          def __init__ (self,age):
              self.__ age = age
      
          @property
          def age(self):
              return self.__age
          @age.setter
          def age(self, age):
              if age < 0:
                  age=0
              self._ age = age
      
      per = Person(18)
      
      per.age = 100   #相当于调用setAge
      print(per.age)  #相当于调用getAge
  • 运算符重载

    • 可实例化对象直接进行运算
    • __add__(加法),两个实例化对象相加直接调用
      class car(object):
          def __init__ (self, num) :
              self.num = num
          def __add__ (self, other): 
              return self.num + other.num    # 或  car(self.num + other.num) 
      
      car1 = car(12)
      car2 = car(13)
      
      print (car1+car2)  # car1+car2 等价于 car1.__add__(car2)
      
    • __str__(字符串),输出单个调用
      class car(object):
          def __init__ (self, num) :
              self.num = num
          def __str__ (self): 
              return "这类汽车数量是%s" % self.num
      
      car1 = car(12)
      car2 = car(13)
      
      print (car1)
    • __len__  ,输出长度
      return len(self.name)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值