python隐藏类中的属性

方法一:

  效果图一:

  代码一:

# 定义一个矩形的类
class Rectangle:
    # 定义初始化方法
    def __init__(self,width,height):
        self.hidden_width = width
        self.hidden_height = height

    # 定义获取width、height的方法
    def get_width(self):
        return self.hidden_width

    def get_height(self):
        return self.hidden_height

    # 定义修改width、height的方法
    def set_width(self,width):
        self.hidden_width = width

    def set_height(self,height):
        self.hidden_height = height

    # 定义一个获取矩形面积的方法
    def get_area(self):
        return self.hidden_width * self.hidden_height

# 创建Rectangle的实例
r_one = Rectangle(3,4)
# 输出打印 r_one的widh
print(r_one.get_width())   # 输出 3
# 输出打印 r_one的area
print(r_one.get_area())    # 输出 12

# 改变width
r_one.set_width(5)
print(r_one.get_area())     # 输出 20

方法二:

  效果图二:

  代码二:

# 可以为对象的属性使用双下划线开头,__xxx
# 双下划线开头的属性,是对象的隐藏属性,隐藏属性只能在类的内部访问,无法通过对象访问
# 其实隐藏属性只不过是Python自动为属性改了一个名字
#   实际上是将名字修改为了,_类名__属性名 比如 __name -> _Person__name
class Person:
    def __init__(self,name):
        self.__name = name

    def get_name(self):
        return self.__name

    def set_name(self , name):
        self.__name = name        

p = Person(‘孙悟空‘)

# print(p.__name) # 报错:AttributeError: ‘Person‘ object has no attribute ‘__name‘
                  #__开头的属性是隐藏属性,无法通过对象访问
p.__name = ‘猪八戒‘ # 这个设置无效,不会报错
print(p._Person__name)
p._Person__name = ‘沙和尚‘

print(p.get_name())

方法三: 常用的

  效果图三:

  代码三:

# 使用__开头的属性,实际上依然可以在外部访问,所以这种方式一般不用
#   一般会将一些私有属性(不希望被外部访问的属性)以_开头
#   一般情况下,使用_开头的属性都是私有属性,没有特殊需要不要修改私有属性
class Person:
    def __init__(self,name):
        self._name = name

    def get_name(self):
        return self._name

    def set_name(self,name):
        self._name = name

p = Person(‘牛一‘)

print(p._name)

原文地址:https://www.cnblogs.com/FlyingLiao/p/11332388.html

时间: 2024-10-13 21:25:42

python隐藏类中的属性的相关文章

Log4Qt使用(三)在DailyRollingFileAppender类中增加属性mMaxBackupIndex

在Log4Qt中存在一个比较大的问题,当使用 DailyRollingFileAppender对日志进行输出时,会无限输出文件,也就是说,当系统运行很久时,日志文件有可能很大,大到无法想象.因此,很多开发者希望在DailyRollingFileAppender中加一个属性,用于配置日志文件的个数. 但是如何做呢? 在Java语言中,我找到一个实例,但是在QT中,没能找到,因此,只能通过自己看源代码,分析从而进行改进. 主要代码如下: dailyrollingfileappender.h: cla

Python类中实例属性的通用显示工具

0.说明 以下的思想方法非常有用,可以帮助你在Python开发提高开发和维护效率,所以可能的话,请仔细琢磨一下其中的代码. 之前在用Python编写一个类时,为了显示的友好性,总是需要在每个类中重载__str__或者__repr__方法,现在有了更好的方法,不需要在每个类中都这么做了,下面给出的方法非常实用. 下面使用的例子使用的Python版本都是Python3.5,但实际上在Python2.7中进行也没有任何影响. 1.正常情况下类实例的不友好显示 在Python中编写一个类时,由于没有重载

python在类中使用__slot__属性

在类中定义__slot__属性来限制实例的属性字段,在创建大量对象的场合可以减少内存占用. 创建大量对象是内存占用对比: 类中不使用__slot__ class MySlot:def __init__(self, a, b, c): self.a = a self.b = b self.c = c @profile() def main(): myObj_list = list() for i in range(50000): myObj = MySlot(i, i, i) myObj_list

python基础===类的私有属性(伪私有)

说在前面的一点: python明明有私有的定义方法就是在变量或者方法的面前加上双下滑线__,这个实际上是python的伪私有.只是一种程序员约定俗称的规定,加了就表示私有变量,但是你如果要在外部调用的话,还是可以调用的. Python并没有真正的私有化支持,但可用下划线得到伪私有 (1)_xxx      "单下划线 " 开始的成员变量叫做保护变量,意思是只有类对象(即类实例)和子类对象自己能访问到这些变量,需通过类提供的接口进行访问:不能用'from module import *'

转:python学习——类中为什么要定义__init__()方法

学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类定义一个矩形的类,目的是求周长和面积. 1 class Rectangle(): 2 def getPeri(self,a,b): 3 return (a + b)*2 4 def getArea(self,a,b): 5 return a*b 6 7 rect = Rectangle() 8 print(rect.getPeri(3,4)) 9 print(rect.

实体类、数据访问类中的属性拓展

类中: using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; namespace 实体类_数据访问类.App_Code { public class Users { SqlConnection conn = null; SqlCommand cmd = null; public Users() { conn = new S

C#类中的属性和字段

字段就是类中自定义的一些变量或是常量,用来记录此类的相关信息和属性,通常和外部定义没什么区别,就是需要添加public等修饰符: 属性也是是类中的概念之一,就是外部访问内部私有(private)字段的一个函数方法, 一般分为自定义属性: 使用get,set访问器自定义对字段赋值 默认定义, 只声明get和set不具体指定,则会默认生成属性字段. 注意只读和只写属性可以通过只定义get和set中的一个来实现: 属性也可以设置值来限制对字段的访问,例如在set中可以添加判断,get返回中可以返回其他

python 旧类中使用property特性的方法

在python中,我们可以拦截对象的所有特性访问.通过这种拦截的思路,我们可以在旧式类中实现property方法. __getattribute__(self, name) #当特性name被访问时自动调用(只能在新式类中使用) __getattr__(self, name) #当特性name被访问且对象没有相应的特性时被自动调用 __setattr__(self, name, value) #当试图给特性name赋值时会被自动调用 __delattr__(self, name) #当试图删除特

python的类的 静态属性 类方法 静态方法

一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh): self.Name=name self.Ower=ower self.Width=width self.Length=length self.Heigh=heigh r1=Room("厕所","北爷",2,2,20000)#实例化出来一个实例r1,实例化的过程就是执