-
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)
Python高级学习第二课(寒假) 2022-1-4
最新推荐文章于 2024-09-03 17:22:28 发布