• python自动化测试-D8-学习笔记之一(面向对象编程)


    #类         一类东西,一个模型
    #实例 #通过这个模型造出来的东西
    #对象 #实例
    #实例化 #就是造实例的过程

    复制代码
    class Cat(object): #新式类书写方式
        def __init__(self,name): #__init__ 构造函数,类里面可以有,也可以没有,构造函数时实例化的时候就会执行的函数
            self.name = name
        def cry(self):
            print('%s在哭泣'%self.name)
    
    xiaohei = Cat('Jaryy') #实例化一个对象
    xiaohei.cry()  #实例化后调用类里面的方法(函数),类里面的方法调用才会运行,不调用不会运行
    复制代码

    #面向的对象的特性
    #封装
    #就是把零散代码封装成一个函数,或者封装成一个类
    #继承
    #就是父类有的东西,你也有。
    复制代码
    class JxFather(object):
        addr = '密云'
        def __init__(self,num):
            self.house_num = num
        def makeMoney(self):
            print('xx')
            print('sdfjksdjfklsdjfsdfsdf23423sdfs,秘密6')
    
    class Jx(JxFather):#继承了JxFather这个类
        def __init__(self):
            self.name = 'wjx'
            print('jx')
        def dabaojian(self):
            print('拔出大宝剑')
    class JxSon(Jx):
        print('jjjj')
    
    
    
    wdb = JxSon()#父类和父类的父类中的东西,wdb这个实例中全都有
    wdb.makeMoney()
    复制代码

    #方法 就是类里面有什么功能,其实就是类里面的函数
    #构造函数
    初始化这个对象,你想让他给你传哪些东西
    他会在这个类实例化的时候自动执行。
    #析构函数
    它是在这个实例被销毁的时候自动执行的。
    #类里面的函数如果有多次调用,而且还要获取到他的返回值,那就用return
    如果这个变量就用了一次,那么就用self

    #类变量,类属性,是一个意思
    存在类里面的,一般一些公共的东西,不会变的,用类变量
    复制代码
    class My(object):
        country = 'Janpan'  #类变量
        __salt = '&2342bkjh234234'
        def __init__(self):
            self.__cup = '乐扣' #私有变量,变量前面加上两个下划线,类外部不可以调用,只能在类内部使用
            print('cup is %s'%self.__cup)
            # self.__my_money()
        def bad(self):
            # print('【%s】坏掉了'%self.__cup)
            # self.__cup = '款泉水瓶'
            print('又换了个杯子是%s'%self.__cup)
    复制代码

    #实例变量
    实例化的时候才创建的变量。
    复制代码
    class My(object):
        addr='changping'
        def __init__(self,name):
            self.name=name
        def cup(self):
            self.bz='cupper'
    
    gl=My('gaili')
    gl.cup()
    print(gl.bz)# bz 这个变量,只有对象实例化后且调用gl.cup()后才存在,如果不调用gl.cup()这个函数,bz这个变量就是不存在的
    复制代码

    #类方法
    通过类名可以直接调用,不需要实例化,可以访问类属性,不可以访问实例属性
    复制代码
    class My(object):
        country = 'Janpan'
    
        @classmethod
        def ddl(cls):#类方法,通过类名可以直接调用
            print(cls.country)
    
    
    My.ddl()#不需要实例化,类名可以直接调用
    复制代码
      #静态方法
    就是写在类里面的一个普通函数而已。
    复制代码
    class Person:
        grade = 1
    def sayHi(self):  # 加self区别于普通函数
            print("Hello, your name is?")
    
        @staticmethod  # 声明静态,去掉则编译报错;还有静态方法不能访问类变量和实例变量
        def sayName():  # 使用了静态方法,则不能再使用self
            print("my name is king")   
    
    Person.sayName() #可以通过类名直接调用 # 运行结果:my name is king
    复制代码

    #实例方法
    必须实例化之后才可以调用的方法
    类里面的函数,如果第一个参数是self,那么就是一个实例方法

    #属性方法
    把一个方法变成一个变量
    属性方法也是一个实例方法,需要实例化才能使用。
    属性方法同样可以通过实例方法实现
    如果你使用属性方法的话,那么必须得有返回值,而且不能有入参。
    复制代码
    class Calc(object):
        def __init__(self,a,b):
            self.a = a
            self.b = b
        def add(self):
            return self.a+self.b
        @property  #通过这个关键字变成一个类属性
        def add2(self):
            return self.a+self.b
    c=Calc(1,2)
    print(c.add2)#实例化后直接调用,后面不用加()

    运行结果:3
    复制代码

    #私有
    私有属性、变量
    私有方法、函数
    方法或者变量,在前面加上__,(两个下划线),它就是一个私有方法/私有变量
    私有方法或者变量在类里面随便用,出了类就不好使,类外部调用私有变量或者方法,就会报错,

    “my.__my_money()
    AttributeError: 'My' object has no attribute '__my_money'”

  • 相关阅读:
    UVA10765图论+点-双连通分量性质应用
    LA4287图论+ 有向图SCC+缩点
    LA5135图论+ 割点性质运用
    LA2572计算几何+离散化+面的覆盖
    LA2402暴力枚举+计算几何+四边形面积
    UVA10566计算几何+相似三角形比例函数+二分范围的辨析
    UVA11300计算几何:正n边形内的最长的线
    UVA11524平面几何+二分法+海伦公式
    LA4986三分法求出凹性函数最小值+计算几何
    胜利大逃亡--hdu --1253(bfs)
  • 原文地址:https://www.cnblogs.com/blackbird0423/p/8493866.html
Copyright © 2020-2023  润新知