zoukankan      html  css  js  c++  java
  • python_day25_私有变量(在变量前加两个下划线即可)_私有方法_静态方法_

    #Author:'haijing'
    #date:2018/10/25

    #————————私有变量(私有字段)————————#
    # class Foo:
    # def __init__(self,name,age):
    # self.name = name
    # self.age = age
    # self.__age = age #私有的字段,不能通过obj.__age访问 注意是两个下划线
    # def show(self):
    # return self.__age
    #
    # obj=Foo('haijing',18)
    # print(obj.name)
    # print(obj.age)
    # # print(obj.__age) #这一行会报错,没有权限看到而已
    # print(obj.show()) #间接方法就可以了

    #————————私有变量+静态方法————————#
    # class Foo:
    # __v = 22 # 静态变量 可以通过类名访问也可以通过对象名访问,就是在字段(变量)前边加上两个下划线
    # def __index__(self):
    # pass
    # def show(self):
    # return Foo.__v #这里刚刚写成 self.__v导致出错
    # @staticmethod
    # def sta_show(): #静态字段
    # return Foo.__v
    # ret = Foo().show() #这里也必须写成Foo()的形式,表示创建对象
    # print(ret)
    #
    # ret = Foo.sta_show() #这里是在调用静态方法,故Foo不用加括号
    # print(ret)

    #————————私有方法+静态方法————————#
    # class Foo:
    # def __f1(self): #私有方法 就是在方法前边加上两个下划线
    # return 123
    # def show(self):
    # r = self.__f1()
    # return r
    # obj = Foo()


    # # ret = obj.__f1() # 这里就不可以直接访问了,会报错
    # # print(ret)
    # ret=obj.show() #间接的去访问私有方法
    # print(ret)
    # 可以写出来想不想让别人看到的代码

    #----------------应用----------------#
    # class F:
    # def __init__(self):
    # self.name='haijing'
    # print(self.name)
    #
    # class S(F): #会默认执行一遍F类中的__init__(self)方法
    # def __init__(self,name,age):
    # self.name = name
    # self.__age = age
    # super(S,self).__init__() #去访问类F中的__index__()方法
    # # F().__init__() #去访问类F中的__index__()方法
    # def show(self):
    # print(self.name)
    # print(self.__age)
    #
    # s = S('min',18)
    # s.show()

    #-----特殊语句__call__(self, *args, **kwargs),对象后面有可以加括号并执行------#
    # class Foo:
    # def __init__(self):
    # print('__init__()')
    # #特殊方法 用特殊语句去执行 特殊语句有对象构成
    # def __call__(self, *args, **kwargs): #如果对象后面加两个括号,那么自动执行这一个方法内的语句
    # print('call')
    #
    # obj = Foo() #类后面加括号自动执行__init__()方法
    # obj() #特殊的语句,用特殊的方法去执行,对象后面也加括号,自动去执行__call__()内的语句

    # #-----特殊语句__int__(self),自己去创建变量强制转换,现在是和对象相互配合使用------#
    #
    # s='123' #也可以用s = str('123')
    # i = int(s) #以前用的int方法是python去给创建的,现在自己去在类中创建int方法
    #
    # class Foo:
    # def __init__(self):
    # pass
    # def __int__(self): #特殊方法
    # return 111
    #
    # obj = Foo()
    # ret = int(obj) #int+对象,那么去自动执行自己写的__int__(self)特殊方法
    # print(ret,type(ret)) #打印111 <class 'int'>

    #-----特殊方法__str__(self),自己去创建变量强制转换,现在是和对象相互配合使用------#
    # class Foo:
    # def __init__(self):
    # pass
    # def __str__(self): #特殊方法
    # return 'haijing' #注意这里返回的必须是字符串 *****
    #
    # obj = Foo()
    # ret = str(obj) #int+对象,那么去自动执行自己写的__str__(self)特殊方法,特殊语句用特殊方法去执行
    # print(ret,type(ret)) #打印haijing <class 'str'>

    #----------------特殊方法和特殊语句的应用,用的比较多的场景----------------#
    # class Foo:
    # def __init__(self,name,age):
    # self.name =name
    # self.age = age
    # def __str__(self): #第112行
    # return '%s-%s'%(self.name,self.age) #为占位符
    # obj = Foo('hiajing',18)
    # print(obj) #在内部经过实际执行 print(str(obj))
    # #在执行print函数的时候在内部会自动的执行python内部的__str__()方法,
    # #只不过这里自己定义了__str__()方法
    # #所以会去执行自己定义的__str__()方法
    # #所以print(obj) 会转去112行去执行函数

    昨天的,由于时间紧,就没有更新博客,昨晚应该是在给世界处理恒电位仪收集到的数据
    haijing in HZ
    2018.10.26 晚




  • 相关阅读:
    斐波那契数列的量化分析
    GridView编辑删除操作
    Linux crontab 命令格式与具体样例
    VB.NET版机房收费系统---组合查询
    XMLHTTP使用具体解释
    Android 在子线程中更新UI的几种方法
    国产操作系统剽窃Linux内核可耻!
    Android的PVPlayer介绍
    稀疏矩阵
    很好的理解遗传算法的样例
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9859118.html
Copyright © 2011-2022 走看看