类与对象

类与对象

  python类的语法 关键字class 具有某一类共同属性和特性的事物

  class 类名(): 这里加不加括号都可以

    xxxx

  类名的规范:数字字母下划线组成,不能以数字开头,首字母大写,驼峰命名,见名知意

  类属性:放在类里面的变量值

  类方法:放在类里面的函数

  实例/对象:具体的一个例子,类名()

  实例具有类里面的所有属性和方法的使用权限

  调用属性方法:实例.属性名

  调用方法/函数名:实例.方法名() 实例.函数名() 

  self:固定的占坑符号,类里面的实例方法必须带self这个参数,self代表实例本身

  类方法(3种)

    实例方法:这个方法只能实例来调用

    class Teacher:

      def cooking(self):

        print('我会做饭')

    t=Teacher() 实例 隐式的传递

    t.cooking() 实例化调用属性和实例方法  可以这么写

    Teacher.coding() 不可以这么写,会报错,只能实例来调用

    Teacher.coding(t) 显示的传递实例也可以 不建议使用

    类方法

    class Teacher:

      @classmethod 类方法

      def swimming(cls):

        print('我会游泳')

    Teacher.swimming() 可以这么写

    t=Teacher()

    t.swimming() 可以这么写

    静态方法:普通方法

    class Teacher:

      @staticmethod 静态方法

      def sing(cls):

        print('我会唱歌')

    Teacher.sing() 可以这么写

    t=Teacher()

    t.sing() 可以这么写

  类里面的属性和函数只能实例去调用

    self.name

    self.coding()

  不同点:静态方法,类方法不可以调用类里面的属性值,如果你要参数,只能自己传递

  什么时候去定义为静态和类方法?

  当你的某个函数与其他的类函数,类属性没有关系就可以定义为静态和类方法 ,这样方便使用,不用去创建实例去调用,直接类.函数名就可以调用

  初始化函数

  class Teacher:

    def __init__(self,参数1,参数2,参数3): 一般不传动态参数和关键字参数,用位置参数或默认参数

      pass 没有return返回值

  t1 = Teacher(1,2,3)

  什么时候用初始化函数?想用就用

    如果某个属性值是多个函数共用的 就可以用初始化函数

    初始化里面的初始化操作,可以带参数也可以不带参数

    跟普通函数一样可以带默认参数

    初始化函数里面可以有赋值好了的属性值

    每次创造一个实例,需要传递跟初始化函数参数个数一致的值

    每个实例都自动调用初始化函数,需要传递对应的参数

    初始化参数的写法要注意怎么把参数赋值给self.参数名,参数名字不一定要一致,但是赋值要正确

    初始化函数无返回值

  继承

    继承的类,是否要用到初始化函数,需要看父类里面是不是有初始化函数

    父类有的,继承后,子类都可以使用

    父类有,子类也有重名的函数,子类的实例优先调用自己的函数,叫重写

    想在子类的函数里面调用父类的一个函数,直接实例调用 self.xx()

    父类没有,子类有的函数,叫拓展

    多继承,继承多个父类

    具有两个父类的属性和方法,如果两个父类具有同名方法的时候 就近原则

  超继承

    重写父类里面的方法,但是又想继承父类方法里面的所有代码可以使用超继承

    class Parent:

      def test(self):

        print('父类代码')

    class Sub(Parent):

      def test(self):

        super(Sub,self).test()

        print('子类代码')

    Sub().test()   

    

posted @ 2022-07-07 17:47  Lucky-qq  阅读(23)  评论(0编辑  收藏  举报