• 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__)
    
  • 相关阅读:
    MIR7预制发票扣除已经预制的数量(每月多次预制,未即时过账)
    CO15批次确定,标准的太蛋疼了
    CRM 价格批导2<上一个太多冗余>
    CRM 价格批导
    通用函数接口日志
    UI BOL 练习 get value set attr
    SAP 打开SAP物料帐期和财务账期
    CRM ORDER_MAINTAIN
    WEB UI 界面打印PDF
    SEND EMAIL SO_DOCUMENT_SEND_API1
  • 原文地址:https://www.cnblogs.com/mumianhuasayyes/p/16083098.html
Copyright © 2020-2023  润新知