python 之简单聊聊私有方法和私有字段

# -*- coding: utf-8 -*-
"""
Created on Sun Nov 13 23:19:03 2016

@author: toby
"""
#知识点:私有方法和私有字段
‘‘‘
应用场景:
不想被外部访问的东西,或者说不想暴露给外部的时候
那么就可以定义私有方法或私有字段
‘‘‘

class Province:
    memo = ‘One of China\‘s 23 provinces‘ #静态字段
    
    def __init__(self,name,capital,leadership,flag):
        self.Name = name #动态字段
        self.Capital = capital #动态字段
        self.Leadership = leadership #动态字段
        self.__Thailang = flag #定义一个私有字段
    
    #定义一个方法,实现在内部访问私有字段,让外部可以间接的访问这个私有字段
    def show(self):
        print self.__Thailang
    
    #也可以通过@property装饰器,构造一个特性实现在内部访问私有字段,让外部可以间接的访问这个私有字段
    @property
    def Thailang(self):
        return self.__Thailang
    
    #定义个私有方法
    def __sha(self):
        print ‘hello world!‘
    
    #定义个公有方法,实现在内部访问私有方法,让外部可以间接的访问到这个私有方法
    def Foo2(self):
        self.__sha()
    
    
if __name__ == "__main__":

    #实例化两个对象,对象名分别是:hb、sd
    japan = Province(‘riben‘,‘shjiazhuang‘,‘liyang‘,True) #值True传递给self.__Thailang
    
    #外部尝试访问私有字段提是无法访问的
    #print japan.__Thailang
    
    #间接的访问私有字段
    japan.show()
    
    #外部访问私有方法,是无法访问的
    #japan.__sha()
    
    #访问公有方法,实现间接访问私有方法
    japan.Foo2()
    
    #访问一下刚才通过@property装饰器构造的方法,看看能不能访问到私有字段,答案是可以的
    japan.Thailang
时间: 2024-10-14 17:05:25

python 之简单聊聊私有方法和私有字段的相关文章

Python中私有方法和私有属性

1.私有方法和私有属性私有方法只能在类内部被调用,不能被对象使用私有属性只能在类内部使用,不能被对象使用 私有属性只能在类内部使用,对象不能使用,但是,我们可以通过在类内部定义公有方法对私有属性进行调用或修改,然后对象在调用这个公有方法使用.###私有属性和私有方法#########在属性名和方法名前面加上 __ class Person(object): def __init__(self): # 公有属性 self.name = "李四" #私有属性 self.__age = 18

如何调用封装的私有方法或私有对象

一般情况下,一个对象的私有方法或私有属性,是无法调用的,但在开发过程中,突然发现我们要钻牛角了,你不准调,但我一定要调 例前段时间,在项目中客户提出了能对报表的列进行顺序调整,并且同一台机子上不同的账号登录修改后的保存能独立,这个好解决应用微软的CacheManager能很好的解决,牛角来了....如果我要在项目中删除所有关于某个报表的记忆缓存咋办,可是只有一个公共的Remove(String Key)方法:问题是Key我用的是用户账号,我不想循环系统所有的账号去删除..... 在调试过程我发现

Objective-C的面向对象中,类有真正的私有方法和私有属性么?

在Java/C#等面向对象语言中,方法的访问权限可以通过public/private/protected来控制其访问权限.而在OC中,方法却并没有访问修饰符.那么,我们有没有办法使其方法变为私有? 1. 如果一个方法不在头文件中声明,那么这个方法在编译期,通过[receiver MethodName]的形式向对象发送消息,编译器会有警告,告诉你未找到该方法,但是实际运行时,依然可以正常运行 原因:编译时,即使这个方法不在头文件中声明,编译器仍然会将方法的签名编译进类的方法列表中, 发送消息时,会

OC-私有方法和私有变量

以前没有太注意这个私有方法和私有变量,后来吃了很多亏, 今小总结一下: 1> 私有方法 概念:就是没有在.h文件中声明,只在.m文件实现的方法. 使用:私有方法只能在本类中使用,不能在子类和分类中使用. 2>私有变量 概念1:就是在.m文件中定义的变量 概念2:就是通过@property自动生成的私有成员变量; 使用:私有变量也是只能在本类中使用,分类和子类都不能使用. 3>声明为私有的变量 概念:声明为私有的变量,就是在.h文件中,定义的成员变量之前修饰符为@private. 使用:

coffeescript 继承、私有方法、私有属性、公共方法、公共属性、静态方法、静态属性实现

class Parent constructor: -> _privateAttr = 'privateAttr' _privateFun = ()-> console.log "Parent::privateFun log #{_privateAttr}" publicAttr: 'publicAttr' publicFun: ()-> _privateFun() console.log "Parent::publicFun log #{@publicAt

python私有方法和私有属性属性理解

私有属性.方法--Python并没有真正的私有化支持,但可用下划线得到伪私有尽量避免定义以下划线开头的变量   (1)_xxx      "单下划线 " 开始的成员变量叫做保护变量,意思是只有类对象(即类实例)和子类对象自己能访问到这些变量,需通过类提供的接口进行访问:不能用'from module import *'导入   (2)__xxx    类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通.)," 双下划线 " 开始的

python 之简单聊聊 析构函数和特殊的__call__方法

# -*- coding: utf-8 -*- """ Created on Sun Nov 13 23:19:03 2016 @author: toby """ #知识点:析构函数和特殊的__call__方法 ''' 析够函数: 其中的"__del__"就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数, 另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这 样可以用来释放内存空

python 之简单聊聊类的只读和只写特性

# -*- coding: utf-8 -*- """ Created on Sun Nov 13 23:19:03 2016 @author: toby """ #知识点:只读特性和只写特性 class Province(object): #增加一个object继承新式类     memo = 'One of China\'s 23 provinces' #静态字段          def __init__(self,name,capital

python 之简单聊聊 类的继承

#_*_coding:utf-8 _*_ #父类 class Father:     def __init__(self):         self.Fname = 'fffffff'     def Func(self):         print 'funcfurnc'     def Bar(self):         print 'barbarbar'     def Test(self): #再定义一个方法         print '11111'         print