python之继承

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

 

posted @ 2022-03-31 18:01  木棉花的漂泊  阅读(24)  评论(0编辑  收藏  举报