# coding=utf-8 ''' 继承的作用:提高代码的重用率 2)重写父类的方法:在子类中定义了一个和父类的方法,重写父类的方法 ''' ''' 类里面的属性和方法 一、属性: 1。类属性:直接定义在类里面的变量叫做类属性,类属性可以通过类访问,也可以通过对象访问 1.1公有有属性:不管类里面还是类里面都可以访问 1.2私有属性: 1)两个下划线开头的叫做私有属性,类外面不可以直接使用私有属性 2)只能在类里面使用,在类外部是无法使用的 2.实例属性 2.1实例属性的定义:对象.属性=属性值 2.2实例属性只能通过对象去访问 #方法: #实例方法:第一个参数是:self,self代表的是实例对象本身,只能使用实例对象来调用 3)一般是以实例对象为主体去调用的 #类方法: 第一个参数是:cls 可以使用类和实例对象来调用 3)类方法一般以类为主体调用,一般是以属性 #静态方法: 1)没有强制定义参数 2)可以通过类和实例对象来调用 3)静态方法调用的时候,内部不会调用使用对象和类相关的属性 #使用场景 4.调用重名的父类方法 子类重写了父类的方法后,如何在子类中再调用父类的方法 方法一、父类名.方法名(self) 方法二、super.方法名() ''' import random class MyClass(): attr=100#共有属性 __attr=200#私有属性 def fund(self): phone=self.randoms_phone() print("这个是实例方法") print("获取私有属性的值{}".format(self.__attr)) print("获取私有属性的值{}".format(MyClass.__attr)) @classmethod def cls_fund(cls): print ("这个是类方法") @staticmethod def stc_fund(): print("这个是静态方法") @staticmethod# 与类无关的外部函数添加到类内部,可以使用静态方法调用,可以在其他类方法和实例对象方法中使用 def randoms_phone(): phone = '13' for i in range(9): phone += str(random.randint(0, 9)) return phone print(MyClass.attr) #print(MyClass.__attr)类外面不可以直接使用私有属性 MyClass().fund() ''' 对象的.__dict__属性:获取对象所有属性以字典的形式返回 动态属性设置 内置函数:setattr(参数1,参数2,参数3) 参数1:类对象 参数2:给对象设置属性名(字符串类型) 参数3:属性值 ''' class Cases: def __init__(self,case_id,title,url,data): self.case_id=case_id self.title=title self.url=url self.data=data datas={'case_id':1,'title':'用例1','url':'baidu.com','data':'nihao'} case=Cases(**datas) print("case=",case) print("case.__dict__====",case.__dict__) setattr(case,"name","ceshiyongl") print("setattr==case.__dict__====",case.__dict__) #动态属性设置 for k,v in datas.items(): setattr(case,k,v) print("for_setattr==case.__dict__====",case.__dict__)