私有属性和方法的使用 | 学习笔记

简介: 快速学习 私有属性和方法的使用

开发者学堂课程【Python入门 2020年版私有属性和方法的使用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10380


私有属性和方法的使用


内容介绍:

一.  定义方法

二.  私有属性的使用

三.  获取私有变量的方式

四.  私有函数

在实际开发中,对象的某些属性或者方法可能只希望在对象的内部别使用,而不希望在外部被访问到,这时就可以定义私有属性和私有方法。


一、定义方法

在定义属性或方法时,在属性名或者方法名前增加两个下划线 __ ,定义的就是私有属性或方法。

class Person;

def __init__( self , name , age):

self.name = name

self.age = age

self._money = 2000# 使用 __ 修饰的属性,是私有属性

def __shopping(self, cost):

self.__money -= cost# __money只能在对象内部使用

print('还剩下%d'%self.__money)

def test(self):

self.__shopping(200)  # __shopping方法也只能在对象内部使用


二、私有属性的使用

如有有一个变量只想在内部使用而不想被外部使用就可以把这个变量定义为私有变量。

class Person(object):

def __init__(selfname,age) :

self.name = name

self.age = age

self.__money = 1000  # 以两个下划线开始的变量是私有变量

p=Person("张三"18)

print(p.name, p.age)  # 可以直接获取到

# print(p.__money)  # 不能够直接获取到私有变量

image.png

在写完代码之后,p 指向了一个内存空间,内存空间里有 name agename age 是普通的属性,可以直接获取。

除了这个之外在 python 里还有私有属性,以两个下划线开始的变量是私有变量。 __money 是一个私有变量,不能通过 p 直接获取。


三、获取私有变量的方式

python 里很多私有的规定并不是真的私有,在程序里面很多时候所谓的私有变量都是可以通过多种方式获取到的。

1. 使用 对象._类名__私有变量名获取

print(p._Person__money)  # 通过这种方式也能获取到私有属性

class Person(object):

def __init__(selfname,age) :

self.name = name

self.age = age

self.__money = 1000# 以两个下划线开始的变量是私有变量

def test(self):

self.__money += 10# 在这里可以访问私有属性

私有的属性在外面不能访问但是在类里是可以访问的。写下 p.test() 本来有1000块钱运行之后就变成了1010块钱。

2. 定义 get set 方法来获取

image.png

在外面想访问 money 可以定义一个函数,这个函数可以被用户调用也可以访问到 money ,这个函数叫接口函数。接口可以被用来让前端页面和后端服务器之间传递数据。

class Person(object) :

def ___init__(self,name,age):

self.name = name

self.age = age

self._money = 1008#以两个下划线开始的变量是私有变量

def get_money(self):

return self._money

想要获取 money 可以使用 print(p.get_money())

import datetime

class Person(object):

def _init__(self,name,age) :

self.name = name

self.age = age

self._money = 1000  # 以两个下划线开始的变量是私有变量

def get_money(self):

print(‘{}查询了余额’.format(datetime. datetime.now()))

return self.__money

创建私有变量并使用函数调用的目的是为了记录很多信息

import datetime

class Person(object):

def _init__(self,name,age) :

self.name = name

self.age = age

self._money = 1000  # 以两个下划线开始的变量是私有变量

def get_money(self):

print(‘{}查询了余额’.format(datetime. datetime.now()))

return self.__money

def set_money(self,qian) :

if type(qian) != int:

print('设置的余额不合法")

return

print('修改余额了')

self._money = qian

想要修改钱数可以输入 p.set_money() ,如果修改了余额运行后就会显示修改余额了。

如果输入 p.set_money(hello)把钱改成了字符串,那么就会显示设置的余额不合法并且钱数不做更改。

1. 使用 property 来获取(有机会的话补充)


四、私有函数

以两个下划线开始的函数,是私有函数,在外部无法调用

class Person(object):

def _init__(self,name,age) :

self.name = name

self.age = age

self._money = 1000  # 以两个下划线开始的变量是私有变量

def _demo(self):  # 以两个下划线开始的函数,是私有函数,在外部无法调用

print("我是 demo 函数, name=f .format( self.name ))

def test(self):

self.__demo()

p. __demo()  # 不能直接调用demo 函数,它是私有方法

p._Person __demo()  # 可以通过Person

相关文章
|
1月前
|
存储 JavaScript 前端开发
私有属性和私有方法的最佳实践是什么?
【10月更文挑战第30天】选择合适的方式来实现私有属性和私有方法,并遵循相关的设计原则和代码规范,能够提高JavaScript代码的质量、可维护性和安全性,更好地满足面向对象编程中的封装和信息隐藏要求。在实际开发中,可以根据项目的具体需求、团队的技术栈和代码风格等因素综合考虑,选择最适合的实现方式。
|
1月前
|
JavaScript 前端开发 开发者
|
1月前
|
JavaScript 前端开发 开发者
创建一个私有变量和私有方法的闭包
【10月更文挑战第26天】可以在JavaScript中创建具有私有变量和私有方法的闭包,实现数据的封装和隐藏,提高代码的可维护性和安全性。不同的方式适用于不同的场景,开发者可以根据具体的需求选择合适的方法来创建闭包。
|
7月前
|
JavaScript
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
68 0
|
4月前
|
存储 Java 程序员
08 Java面向对象基础(对象与类+实例变量与方法+构造方法+this关键字)
08 Java面向对象基础(对象与类+实例变量与方法+构造方法+this关键字)
81 4
|
前端开发 开发者 Python
私有属性和方法的使用 | 学习笔记
快速学习 私有属性和方法的使用
私有属性和方法的使用 | 学习笔记
|
Java Scala 开发者
伴生对象和伴生类的小结|学习笔记
快速学习伴生对象和伴生类的小结。
185 0
伴生对象和伴生类的小结|学习笔记
|
开发者 Python
类方法和静态方法 | 学习笔记
快速学习类方法和静态方法,介绍了类方法和静态方法系统机制, 以及在实际应用过程中如何使用。
类方法和静态方法 | 学习笔记
|
开发者 Python
类方法和静态方法回顾|学习笔记
快速学习类方法和静态方法回顾
类方法和静态方法回顾|学习笔记
|
开发者 Python
类属性和对象属性|学习笔记
快速学习类属性和对象属性
类属性和对象属性|学习笔记