# 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__)