zoukankan      html  css  js  c++  java
  • day23

    今日所学:

         一:类属性与对象属性

                类中应该仅存储所有对象共有的内容,如所有人的国籍相同就放到类中

        对象中存储每个对象独有的内容,如每个人的名字都不同

         二:init方法的作用

               init 是对初始化的缩写,用于对象的属性设置初始值特点:

                   1,执行时机:当实例化产生对象时会自动执行该函数

         2,会自动传入需要初始化的对象

         3,初始化必须包含至少一个参数 用于表示对象本身

         4,该函数不允许有返回值,必须为None

      三:绑定方法

                      方法就是函数,那就是说绑定方法 ==绑定函数

                      默认情况下 在类中定义的方法 都是绑定方法

          绑定方法是把函数和对象绑定到一起

    绑定方法与普通函数的区别

    个类中可以有属性和方法

    方法分为两种

    1.绑定方法

    ​ 1.1对象绑定方法

    ​ 在使用对象调用时会自动传入对象本身

    ​ 1.2类绑定方法

    ​ @classmethod

    ​ 在使用对象调用时会自动传入类本身

    ​ 在使用类来调用时也会自动传入类本身

    ​ 单例模式中就会经常使用@classmethod

     

    到底绑定给谁?

    当你的方法执行过程中需要使用到对象中数据时就绑定给对象

    当你的方法执行过程中需要使用到类中数据时就绑定给类

     

    2.非绑定方法

    即不需要对象中的数据 也不需要类中的数据  那就定义为非绑定方法,就是普通函数

    @staticmethod

    oop知识点:

    1.属性应该放在类中还是对象中

    2.绑定方法  == 绑定函数

    对象绑定方法

    ​ 对象调用时 自动传入对象本身

    ​ 类调用时不会自动传参 有几个就需要传几个

    类绑定方法

    ​ @classmethod

    ​ 无论是对象还是类调用 都会自动传入类本身

    非绑定方法(静态方法)

    ​ @staticmethod

    ​ 谁调用都不会自动传参

    继承

    继承指的是一种关系,在生活中通过继承关系,例如王思聪继承王健林,对于王思聪可以,可以直接使用王健林已经拥有的

    被继承的一方(王健林) 称之为父   继承的一方(王思聪) 称之为子

    在OOP中 继承描述是类和类之间的关系  例如b类继承a类  b类可以直接使用a类中的属性和方法

    a是父类(基类,超类)  b是子类(派生类)

    好处:极大的提高了代码的复用性

     

    如何使用继承,至少需要两个类

    语法:

    class 子类名称(父类名称):

    ​ pass

    class Teacher:
       school = "oldboy"
       def __init__(self,name,age):
           self.name = name
           self.age = age

       def say_hi(self):
           print("hello i am %s" % self.name)
           
       def teach(self):
           print("正在教书......")

    class Student(Teacher):
       pass

    print(Student.school)
    print(Student.say_hi)
    print(Teacher.say_hi)

    s = Student("rose","123")
    s.say_hi()
    s.teach()

    在上述案例中通过继承 学生就拥有了老师的所有内容  但是学生不应该教书这个技能
    意味着这个继承关系 有问题 不合理
    需要先抽象 在继承
  • 相关阅读:
    26 转义符 re模块 方法 random模块 collection模块的Counter方法
    25 正则表达式
    24 from 模块 import 名字
    24 from 模块 import 名字
    24 from 模块 import 名字
    23 析构方法 items系列 hash方法 eq方法
    21 isinstance issubclass 反射 _str_ _new_ _len_ _call_
    20 属性, 类方法, 静态方法. python2与python3的区别.
    python(1)
    python之字符串格式化
  • 原文地址:https://www.cnblogs.com/Fzhiyuan/p/10878609.html
Copyright © 2011-2022 走看看