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

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

开发者学堂课程【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

相关文章
|
2月前
|
JavaScript
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
32 0
|
2月前
|
Python
在Python中,类的属性可以分为公有属性和私有属性
【5月更文挑战第7天】Python类包含公有和私有属性。公有属性可直接外部访问,如`person.name`,而私有属性如`_name`需通过getter/setter方法访问,如`person.getName()`和`person.setName()`。私有属性用于封装数据、隐藏实现细节,增强代码可维护性和安全性。封装能灵活修改内部实现,不影响外部;安全性防止外部非法修改数据;一致性确保所有数据操作在类内完成,简化代码并减少错误。
39 10
|
11月前
|
Java
Java 类(私有属性、对象方法、类方法,构造函数)
Java 类(私有属性、对象方法、类方法,构造函数)
97 0
|
前端开发 开发者 Python
私有属性和方法的使用 | 学习笔记
快速学习 私有属性和方法的使用
66 0
私有属性和方法的使用 | 学习笔记
|
Java Scala 开发者
伴生对象和伴生类的小结|学习笔记
快速学习伴生对象和伴生类的小结。
155 0
伴生对象和伴生类的小结|学习笔记
|
开发者 Python
类方法和静态方法 | 学习笔记
快速学习类方法和静态方法,介绍了类方法和静态方法系统机制, 以及在实际应用过程中如何使用。
91 0
类方法和静态方法 | 学习笔记
|
开发者 Python
类方法和静态方法回顾|学习笔记
快速学习类方法和静态方法回顾
83 0
类方法和静态方法回顾|学习笔记
|
开发者 Python
类属性和对象属性|学习笔记
快速学习类属性和对象属性
88 0
类属性和对象属性|学习笔记
|
开发者 Python
私有属性的继承特点 | 学习笔记
快速学习 私有属性的继承特点
87 0
|
前端开发 开发者
class-子类访问父类上的实例方法|学习笔记
快速学习 class-子类访问父类上的实例方法
91 0