其他分享
首页 > 其他分享> > Day26

Day26

作者:互联网

今日总结

动态方法、静态方法

1.绑定给对象的方法
  	class Student:
      def run(self):
        prtin(self)
  	# 类调用绑定给对象的方法:有几个参数就需要传几个参数
    Student.run(123)
    # 对象调用绑定给对象的方法:会自动将对象当做第一个参数传入
    obj1.run()
  
  2.绑定给类的方法
  	class Student:
      @classmethod
      def eat(cls):
        prtin(cls)
  	# 类调用绑定给类的方法:自动将类当做第一个参数传入
    print(Student)  # <class '__main__.Student'>
    Student.eat()  # <class '__main__.Student'>
    # 对象调用绑定给类的方法:也不需要传参 会讲产生该对象的类自动当做第一个参数传入
    obj1.eat()  # <class '__main__.Student'>
    
# 静态方法
	class Student:
    	@staticmethod
      def speak(a):
          print(a)
    # 类调用静态方法:自己传值
    Student.speak(123)
    # 对象调用静态方法:要自己传值
    obj1.speak(321)

面向对象之继承

'''
	面向对象三大特性-->继承*、封装、多态

	在面向对象中继承用来描述类与类之间的从属关系
		eg:类A继承了类B 那么类A就可以使用类B中所有的数据、功能等
	继承可以减少代码冗余,提高开发效率,并且支持多继承
	对象:数据与功能的结合体
	类:多个对象相同数据和功能的结合体
    父类:多个类相同数据和功能的结合体
'''
# 继承的语法结构
    class A(B):  
                pass
	# 被继承的类称为-->父类或者基类 继承别人的类称为-->子类或者派生类
    
# 继承与抽象
抽象:由下往上提取相同特征
继承:由上往下功能传承

名字的查找顺序

# 单继承情况
	从对象自己的名称空间中查找,没有择取产生对象的类中查找,如果也没有并且类有父类则到父类中查找 以此往复
    对象-->类-->类的父类
    
# 多继承情况
'''
	新式类:直接或者间接继承了object或者其子类的类
    经典类:不继承任何的类
	在python2中存在经典类与新式类,而在python3中只有新式类
	区别在于是否继承了一个默认的object类
	我们在定义类的时候会习惯性的写
    class MyClass(object):
        pass
    是为了兼容python2和python3
'''
# 非菱形继承的情况下(对象继承的父类不为其他类的子类)
按照继承时从左往右依次查找
A-->B-->c

:

# 非菱形继承的情况下(对象继承的父类为其他类的子类)
  	父类中名字的查找顺序就是按照继承时从左往右依次查找
   	如果多个父类还有分类 那么遵循"深度优先"
  	A-->D-->B-->E-->C-->F

:

# 菱形继承的情况下
  	父类中名字的查找顺序就是按照继承时从左往右依次查找
   	如果多个父类还有分类 那么遵循"广度优先"
	A-->D-->B-->E-->C-->F-->M

:

派生类

class Person:
    def __init__(self,name,age,gender):
        self.name = name
        self.age = age
        self.gender = gender
        
class Teacher(Person):
    def __init__(self,name,age,gender,level,salary):
        super().__init__(name,age,gender)  
        # super(Teacher,self).__init__(name,age,gender) 上面是简写
        self.level = level
        self.salary = salary     
        
class Student(Person):
    def __init__(self,name,age,gender,stu_id,class_id):
        super().__init__(name, age, gender)
        # super(Teacher,self).__init__(name,age,gender) 上面是简写
        self.stu_id = stu_id
        self.class_id = class_id
        
# 子类继承父类后如果需要扩展可以使用super关键字,这样的子类就叫派生类,本质其实还是子类

标签:__,--,self,Day26,继承,父类,class
来源: https://www.cnblogs.com/ymxda9/p/16114588.html