类的继承

mac2022-06-30  70

# 1.继承与抽象# 抽取老师和学生中相同的部分形成person类class Person: def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender def say_hi(self): print("name:%s,gender:%s,age:%s" % (self.name, self.gender, self.age))class Teacher(Person): # 继承person类 def teaching(self): print("老师教学生,写代码....")t1 = Teacher("jack", "male", 20)t1.say_hi()class Student(Person): passstu1 = Student("rose", "female", 18)stu1.say_hi()# 2.属性的查找顺序# 对象自己的 - > 所在类中 -> 找父类 - >父类的父类 ->Object(到这一步时会报错,因为object存在与源代码之中,此时属性为空)# type ctrl加右键查看它的源码你就明白了# 3.派生与覆盖是继承这两个是继承的两种情况# 4.元素类型限制"""需求 实现一个能够限制元素类型的列表类"""class MyList(list): def __init__(self,element_type): super().__init__() # 调用父类的初始化方法 来完成基本的初始化 self.element_type = element_type def append(self, object): """ :param object: 是要存储的元素 :return: 没有 """ if type(object) == self.element_type: #我们需要在这里访问父类的append函数来完成真正的存储操作 super(MyList,self).append(object) else: print("sorry sir, you element type not is %s" % self.element_type)# 创建是指定要存储的元素类型m = MyList(int)# 当你有需求,是需要在创建对象时 干点什么事儿 那就该想到初始化方法m.append(1)print(m[0])m.append("121212")#4.字类访问父类class Parent: text = "abc" def say_something(self): print("anything")class Sub(Parent): def show_info(self): # print(super(Sub,self).text) # super(Sub,self).say_something() # 访问方式2 py3的新语法 最常用的方式 print(super().text) super().say_something() #方式3 直接指定类名调用 # print(Parent.text) # Parent.say_something(self)# sub = Sub()# sub.show_info()# 5.初始化方法中的父类采用super()class Person: def __init__(self,name,gender,age,*args): self.name = name self.gender = gender self.age = age self.aa() def aa(self): print("aa run") def say_hi(self): print("name:%s ,gender:%s,age:%s" % (self.name,self.gender,self.age))class Student(Person): def __init__(self,name,gender,age,number): super().__init__(name,gender,age) self.number= number def say_hi(self): super().say_hi() print("numnber:%s" % self.number)stu = Student("rose","mael",20,"old01")stu.say_hi()# 6.组合class Phone: def __init__(self,price,kind,color): self.price = price self.kind = kind self.color = color def call(self): print("正在呼叫XXXX;") def send_message(self): print("正在发送短信....")class Student: def __init__(self,name,gender,phone): self.name = name self.gender = gender self.phone = phone def show_info(self): print("name:%s gender:%s" % (self.name,self.gender))phone = Phone(1000,"apple","red")stu1 = Student("rose","male",phone)stu1.phone.call()# 9.菱形继承(了解)# py3 中是广域查找# py2 中是深度查找# py3中所有的类都是继承了源码中object的类,新式类# py2中所有的类都不是继承源码中object的的类,旧式类

转载于:https://www.cnblogs.com/night-rain/p/11247682.html

最新回复(0)