私有属性/方法的问题

在属性/方法名前有双下划线的,称为私有属性/方法,私有属性/方法外部不能直接访问,

一般访问类的私有属性,可以通过调用 使用了私有属性的方法 达到访问私有属性,

但python中并没有真正意义的私有,可以通过 _类名__属性/方法 来访问。

例: 有一个Woman类,内有私有属性 __age 和 私有方法 __secret(self)

  # 实例化一个小明对象

  xiaoming = Woman("xiaoming")

  # 通过上述方法访问私有属性

  print(xiaoming._Woman__age)

  # 通过上述方法访问私有方法

  print(xiaoming._Woman__secret())

提示:

  虽然可以使用这种方法访问,但不建议使用。

原文地址:https://www.cnblogs.com/Selling-fish-bears/p/10350246.html

时间: 2024-08-07 09:52:35

私有属性/方法的问题的相关文章

java反射调用私有方法和修改私有属性

//调用私有方法package com.java.test; public class PrivateMethod { private String sayHello(String name) { return "hello "+name; } } 测试: package com.java.test; import java.lang.reflect.Method; public class PrivateMethodTest { public static void main(Str

JavaScript基础对象创建模式之私有属性和方法(024)

JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: function () { return this.myprop; } }; console.log(myobj.myprop); // `myprop` is publicly accessible console.log(myobj.getProp()); // getProp() is publ

访问类的私有属性(RTTI和模仿类2种方法)

如何访问类的私有属性? 下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享): 一.利用 RTTI 取得类私有属性(建议使用此方法): type TPathDataHelper = class helper for TPathData public function PathData: TList<TPathPoint>; end; function TPathDataHelper

JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法

相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链 JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法 1.Object类 在JS中,Object是所有类的基

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

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

Java中子类继承了父类的私有属性及方法吗?

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法

__set($key,$values) 和__get($varName) 魔术方法设置读取私有属性

__set($key,$val) 对类内私有属性赋值 作用:对私有属性的处理 当在类外对类内的私有属性赋值时会自动调用此函数 __get($varName) 读取类内私有属性 作用:虽然可以外部访问,但有限制条件,否则直接public即可,不需要私有化此属性 根据限制条件 开放访问权限 当对象调用类内私有属性时调用此方法 必须有返回值 return $this->$varName class A{ private $name; private $age; function __set($key,

对象方法、类方法、原型方法 &amp;&amp; 私有属性、公有属性、公有静态属性

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>test</title> </head> <body> <script> //对象构造函数 function Atest(name){ //私有属性,只能在对象构造函数内部使用 var class

类的私有属性及私方法(请注意属性的传值方式)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://blog.csdn.net/wklken/article/details/6313265 #类的私有属性及私方法(请注意属性的传值方式) class MyClass(): def __init__(self): #定义私有属性,且直接给属性赋值,请记住传值方式 self.__name='xiaodeng' self.age=28 def printName(self): return sel