精华内容
下载资源
问答
  • 在本篇文章里小编给大家整理的是一篇关于python调用私有属性的方法总结,对此有需要的朋友们可以学习下。
  • python3 property调用私有方法用法
      1 class Test(object):
      2     def __init__(self):
      3         self.__num=100
      4 
      5     def getNum (self):#调用私有方法
      6         return self.__num
      7     def setNum(this,num):
      8         if num < 100:
      9             this.__num=num
     10     num=property(getNum,setNum)
     11 t = Test()
     12 t.num=20
     13 print(t.num)
    property进一步用法
      1 class Test(object):
      2     def __init__(self):
      3         self.__num=100#私有属性
      4 
      5     @property
      6     def num (self):#调用私有属性
      7         return self.__num 
      8     @num.setter
      9     def num(this,num):
     10         if num < 100:
     11             this.__num=num
     12 t = Test()
     13 t.num=20
     14 print(t.num)
    展开全文
  • 主要介绍了python私有函数调用方法,较为详细的分析了Python私有函数的原理与调用技巧,需要的朋友可以参考下
  • Python类的方法名前面加双下划线(__)可以让该方法在外部不可访问。 class Student: #student1方法可以在类的外部访问 def student1(self): print("student1") #__student2方法不可以在类的外部访问 def ...

    在Python类的方法名前面加双下划线(__)可以让该方法在外部不可访问。

    class Student:
    
        #student1方法可以在类的外部访问
        def student1(self):
            print("student1")
        #__student2方法不可以在类的外部访问
        def __student2(self):
            print("student2")
    
    p = Student()
    p.student1()
    p.__student2     #会报错
    

    执行上述代码,会抛出以下信息:

    student1
    Traceback (most recent call last):
      File "D:\软件脚本\python脚本\04.py", line 20, in <module>
        p.__student2     #会报错
    AttributeError: 'Student' object has no attribute '__student2'

    其实“student2”方法也不是绝对不可访问。Python编译器在编译Python源代码时并没有将“student2”方法真正私有化,而是一旦遇到方法名以双下划线(__)开头的方法,就会将方法名改成“ClassNamemethodName”的形式。其中ClassName表示该方法所在的类名,“methodName”表示方法名。ClassName前面要加上但单下划线()前缀。

    对于上面的代码,Python编译器会将“student2”方法更名为“_Studentstudent2”,所以在类的外部调用“student2”方法会抛出异常。抛出异常的原因并不是“student2”方法被私有化了,而是Python编译器把“method2”的名称改为“_Personmethod2”了。当我们了解了这些背后的原理,就可以通过调用“_Studentstudent2”方法来执行“student2”方法

    p = Student()
    p.student1()
    p._Student__student2()

    此时,变成功调用student2了,

    student1
    student2

     

    展开全文
  • python私有方法和私有属性

    万次阅读 多人点赞 2018-05-21 08:51:51
    Python默认的成员函数和成员变量都是公开的,Python 私有属性和方法没有类似别的语言的public,private等关键词来...声明该方法为私有方法,不能在类的外部调用 代码 class Test(object): #普通方法 def test(...

     

    Python默认的成员函数和成员变量都是公开的,Python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了

    声明该方法为私有方法,不能在类的外部调用

    代码

    class Test(object):
        #普通方法
        def test(self):
            print("普通方法test")
        #普通方法
        def _test1(self):
            print("普通方法_test1方法")
        #私有方法
        def __test2(self):
            print("私有方法__test2方法")
    
    t = Test()
    t.test()
    t._test1()
    #t.__test2()#调用的时候会报错

    执行效果

     

    外界无法访问私有方法,但可以在类内部方法私有方法。

    class Test(object):
        #私有方法
        def __test2(self):
            print("私有方法__test2方法")
        #普通方法
        def test(self):
            print("普通方法test")
        #普通方法
        def _test1(self):
            print("普通方法_test1方法")
            #可以在类内部调用私有方法
            t.__test2()#
            self.__test2()
    t = Test()
    t.test()
    t._test1()
    #t.__test2()和t.test2()#调用的时候会报错

      私有方法应用场景

     

    执行效果

    私有属性

    如果有一个对象,当需要对其进行修改属性时,有2种方法

    对象名.属性名 = 数据 ---->直接修改

    对象名.方法名() ---->间接修改

    为了更好的保存属性安全,即不能随意修改,一般的处理方式为

    将属性定义为私有属性

    添加一个可以调用的方法,供调用

    案例

    class Person(object):
        def __init__(self, name):
            self.__name = name
        def get_name(self):
            return self.__name
        def set_name(self, new_name):
            if len(new_name) >= 5:
                self.__name = new_name
            else:
                print("error:名字长度需要大于或者等于5")
    
    xiaoming = Person("skyter")
    print(xiaoming.get_name())
    #print(xiaoming.__name)#会报错

    class Person(object):
        def __init__(self, name):
            self.__name = name
    
        def get_name(self):
            return self.__name
    
        def set_name(self, new_name):
            if len(new_name) >= 5:
                self.__name = new_name
            else:
                print("error:名字长度需要大于或者等于5")
    
    
    p = Person("skyter")
    
    p.set_name("wanger")
    print(p.get_name())
    
    p.set_name("lisi")
    print(p.get_name())

    执行如图:

     总结

    Python中没有像C++中public和private这些关键字来区别公有属性和私有属性

    它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。

     

    展开全文
  • 私有方法:顾名思义,只有自己才能使用的方法,在python中,定义私有方法一般用双下划线表示:‘__’ class Sent: #私有方法(双下划线定义的,比较重要,可以通过新建一个方法调用) def __sent_msg(self): ...

    私有方法:顾名思义,只有自己才能使用的方法,在python中,定义私有方法一般用双下划线表示:‘__’

    
    class Sent:
    
    #私有方法(双下划线定义的,比较重要,可以通过新建一个方法调用)
    
        def __sent_msg(self):
            print('-----------正在发送短信-----------')
    #公有方法
      
        def sent_msg(self,new_money):
            if new_money>1000:
                self.__sent_msg()
            else:
                print('余额不足,请先充值,再发送短信')
    sent = Sent()
    sent.sent_msg(100)
    #如上程序所示,私有方法不可以被直接调用
    #既然如此,私有方法在继承中又该扮演如何的角色呢?
    class A:
        def __init__(self):
            self.num1=100
            self.__num2=200
        def test1(self):
            print('========test1=======')
        def __test2(self):
            print('========test2=======')
    class B(A):
        pass
    #我们可以非常容易的调用继承于A的公有方法
    b=B()
    b.test1()
    

    在这里插入图片描述

    但如果我们试图调用__test2(私有方法)
    b.__test2
    在这里插入图片描述
    会发现程序报错
    所以不难得出结论:私有方法不会被继承
    而在我们定义的class A中的__init__中也有两个方法,
    self.num1=100
    self.__num2=200
    同理,当我们在程序中调用self.num1时,程序运行
    在这里插入图片描述
    当我们运行self.__num2时,程序报错
    在这里插入图片描述
    但是问题又双来了,当我们调用的是公有方法,但该公有方法却又调用了私有方法会怎样呢?
    在class A 原程序基础上再定义一个函数

            def test3(self):
        		msg3=self.__num2
     		    print(msg3)
     		    #公有方法test3内部含有A类私有方法__num2
     		  b=class B
     		  b.test3()
     运行结果:
    

    在这里插入图片描述
    所以,如果调用的是继承父类的公有方法,可以在这个公有方法中访问父类的私有方法和公有方法
    但是,如果在子类中实现了一个公有方法,则不可以调用继承父类的私有方法和私有属性

    展开全文
  • 1.私有方法和私有属性私有方法只能在类内部被调用,不能被对象使用私有属性只能在类内部使用,不能被对象使用 私有属性只能在类内部使用,对象不能使用,但是,我们可以通过在类内部定义公有方法对私有属性进行调用...
  • Python私有方法

    2014-06-05 11:45:20
    __private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。 在类的内部调用slef.__private_methods。 类的专有方法: __init__ 构造函数,在生成对象时调用 __del__ 析构函数,释放对象时...
  • 我们在python中从某父类继承子类时,可以在子类中对父类的数据域和方法操作,但是当该数据域...子类调用父类私有方法:self._父类名+私有方法名 代码如下: class aa: # 定义父类aa def __init__(self): self.__u...
  • # coding:utf-8 class Parent: def __test(self): print '父类私有方法' def test(self): print '父类共有方法' # 调用私有方法 self.__test() class Son(Parent): pass ...
  • Python3中的私有方法及其调用方法

    万次阅读 2018-03-01 16:24:38
    Python3中的私有方法:如果在一个方法前面加两个下划线,则此方法会变为私有方法,私有方法不能直接调用,必须构造另一个函数来调用私有方法,私有方法的作用就是在开发的过程中保护核心代码。如:class Dog(): def...
  • 如果不想直接调用一个方法时,可以将它定义为私有方法(在方法前面加两个下划线),然后再定义一个公有方法,在公有方法中调用私有方法 一般会在公用方法中加一个判断,保证合法的参数才能被调用 例如: 如果直接...
  • Python不像C++、Java、C#等有明确的公共、私有或受保护的关键字来定义成员函数或属性,它使用约定的单下划线“_"和"__"双下划线作为函数或属性的前缀来标识。使用单下划线还是双下划线,是有很大的区别的。 1. 单...
  • 私有方法在类外不能被调用,在类里面可以被调用。格式为 def __方法名(self) 拓展:单置下划线_ 和双置下划线__ 模块中的变量仅仅只作为测试用,在被(from 模块名 import *)导入时不想连带着被导入这时,可以在变量...
  • 在单元测试时,如果需要访问某个类的私有方法,只需要调用"_类名__方法名"即可 举个例子: class Foo: def __bar(self, arg): print(arg) def baz(self, arg): self.__bar(arg) f = Foo() f._Foo__bar('a')
  • 1、在Python中要想定义的方法或者变量只在类内部使用不被外部调用,可以在方法和变量前面加两个下划线 1 #-*- coding:utf-8 -*- 2 3 class A(object): 4 name = "sashuangyibing" 5 __mingzi = ...
  • python之私有属性及私有方法

    千次阅读 2017-11-08 14:15:31
    如果有一个对象,当需要对其进行修改属性时,有2种方法: (1)对象名....(2)添加一个可以调用方法,供调用,也就是间接调用属性 下面这个是一个错误的例子: class People(object): def __in
  • 私有:只在对象内使用的...外部不能调用私有属性和私用方法 class Women: def __init__(self, name): self.name = name self.__age = 18 def __secret(self): print("%s 的年龄是%d" % (self.name, self.__age...
  • #私有化的方法一般是内部调用,子类你能继承,外部不能调用 class Animal(): def __eat(self): print('吃东西') pass def run(self): self.__eat() #在内部可以调用私有方法 ...# b.__eat() #不能调用私有方法
  • 就标识这个这个属性是一个私有属性self.__money = 1000000如果一个方法是以两个下划线开始 也代表已经私有子类继承了父类 如果父类的属性私有 将不会被子类继承私有属性和私有方法可以在类的里面使用自定义类中 ...
  • 关于私有属性和私有方法, 1. 两个下划线开头的属性是私有的(private)。其他为公共的(public)。...私有属性和私有方法在类中可以调用 在外部访问时用 类名(对象名)._类名__私有属性名 class Per...
  • python 私有方法,私有属性 在继承中的表现 情况1:如果调用的是继承父类中的公有方法,那么,可以在这个公有方法 中访问父类的私有属性和私有方法; 情况2:如果在子类中实现了一个公有方法,那么,这个方法是不能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,054
精华内容 421
关键字:

python调用私有方法

python 订阅