# 今日内容 __init__ 绑定方法与反绑定方法 抽象 继承 派生 属性查找 # __init__是什么:就是初始化的 , 初始化就是给初始值的意思 # __init__作用:给对象属性初始值的意思 # 怎么使用 eg ''' class Student: def __init__(self,name,age): self.name = name self.age = age def fn(self): print('uuu') # 获取属性时 e= Student('wsx',18)# self是自带的 只需要传self后面的属性名称就好 print(e.name) # wsx print(e.age) # 18 ''' # 注意点 # 执行时机:当实例化产生对象时会自动执行该函数 # 会自动传入需要初始化的对象 # 初始化必须包含至少一个参数 用于表示对象本身 # 该函数不允许有返回值 # 绑定方法 # 是什么:就是把函数和对象绑定在一起 拿到对象就可以拿到数据和处理数据的方法 # 怎么使用:直接调用就可以 # 注意点:在类中定义的方法就是绑定方法 # 当你创建对象时 发生什么 # 1.产生一个空对象 (名称空间) # 2.自动调用__init__方法 并且把这个对象以及额外的参数传入 # eg username = "jack" pwd = "123" db_name = "qq" atm_usr = "jerry" atm_pwd = "123" #用于登录数据库 def login_data_base(username,pwd,db_name): print("%s登录%s数据库 密码为%s" % (username,db_name,pwd)) def login_atm(usr,pwd): print("%s 登录了ATM 密码为%s" % (usr,pwd)) login_data_base(username,pwd,db_name) login_data_base(username,pwd,db_name) login_data_base(username,pwd,db_name) login_data_base(username,pwd,db_name) login_atm(atm_usr,atm_pwd) login_atm(atm_usr,atm_pwd) login_atm(atm_usr,atm_pwd) # 绑定方法与普通函数的区别 # 当使用类调用时,就是一个普通函数 有几个参数就得传几个参数 # 当用对象来调用时,是一个绑定方法了,会自动将对象作为第一个参数传入 # # # 一个类中可以有属性和方法 # 方法分为两种 # 1.绑定方法 # 1.1对象绑定方法 # 在使用对象调用时会自动传入对象本身 # # 1.2类绑定方法 # @classmethod # 在使用对象调用时会自动传入类本身 # 在使用类来调用时也会自动传入类本身 # # 单例模式中就会经常使用@classmethod # # # # 到底绑定给谁? # 当你的方法执行过程中需要使用到对象中数据时就绑定给对象 # 当你的方法执行过程中需要使用到类中数据时就绑定给类 # # 2.非绑定方法 # 即不需要对象中的数据 也不需要类中的数据 那就定义为非绑定方法,就是普通函数 # @staticmethod # # # # oop知识点: # # 1.属性应该放在类中还是对象中 :属于类的属性就放在类中 属于对象属性的就放在对象属性中 # # 2.绑定方法 == 绑定函数 # 对象绑定方法 # 对象调用时 自动传入对象本身 # 类调用时不会自动传参 有几个就需要传几个 # # 类绑定方法 # @classmethod # 无论是对象还是类调用 都会自动传入类本身 # # 非绑定方法(静态方法) # @staticmethod # 谁调用都不会自动传参