python中类的属性方法和私有化

知识回顾:

1.类。明白什么是类?如何定义类?

2.对象。什么是对象?如何使用对象?

3.类的方法的定义以及调用。

4.类的方法内部使用类的属性,调用了self参数,这个参数可以用其它的名字替换,但是表述类的对象的参数必须是类中方法的第一个参数。


本节知识视频教程

文字讲解开始:

一、类的属性和方法

1.类的属性

属性:类似于人的身高、职业、性别等称为属性。

注意:类的属性默认情况下是直接被开放出去,可以直接调用读取和赋值的。

2.类的方法

补充:在类的内部不同方法之间是可以调用类的同一个属性的。

举例:

def sayHello(self):

print("hello,"+self.name)

二、类中属性方法的私有化

1.私有化的概念理解

私有化往往其实就是指只能被某些特定的对象调用。

2.类的方法的私有化

其实私有化只需要在方法名前加两个下划线即可,举例:

def __sayHello(self):

print("hello,"+self.name)

而实际上,这种类型的私有化并不是绝对不能被调用的,我们可以采用类的名称前加一个下划线以及定义的整个私有方法名的拼接组合成一个新的方法名称就可以调用。举例:

p._Person__sayHello()

提问:为什么私有化的类可以被调用呢?

在python中,私有化的类方法在被编译的时候,实际上就是在这个方法名称前面拼接了下划线和类的名称。

提问:私有化的调用方式如何知道的呢?

使用inspect库的getmembers方法可以访问到类中的成员与方法。

import inspect

methods=inspect.getmembers(p,predicate=inspect.ismethod)

print(methods)

注意点:inspect.getmembers(类的对象,刷选依据)

3.分析结论:

无论是类的方法还是类的属性,只要在方法或者属性名称前面加上两个下划线,那么就会被python编译器自动私有化,会在这个名称前面加上一个_类的名称。

三、总结强调

1.掌握类的属性的定义和调用

2.掌握类的方法的定义和调用

3.掌握类的属性和方法的私有化

4.掌握使用inspect库来查看类的所有的属性和方法的成员。

本节源代码:

class Person:
    #定义类的方法
    def setName(self,name):
        self.__name=name
    def getName(self):
        return self.__name
    def __sayHello(self):
        print("hello,"+self.__name)
p=Person()
p.setName("老刘")
print(p.getName())
p.setName("刘金玉")
print(p.getName())
#直接设置类的属性
p.__name="老张"
print(p.getName())
#直接读取类的属性
print(p.__name)
p._Person__sayHello()

import inspect
methods=inspect.getmembers(p)
print(methods)

【Python图书】

相关文章:

  1. python应用场景有哪些?岗位工资如何?
  2. 开始了解python语言吧!
  3. 入手一门编程语言,一起初识Python
  4. html中的<!DOCTYPE html>起到什么作用?前端面试经常考到
  5. python中类和对象
  6. python中函数递归VS循环

本文分享自微信公众号 - 编程创造城市(bcczcs)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微卡智享

SQL Server分区表(一):分区表的介绍

如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。

12830
来自专栏微卡智享

c# 获取当前日期时间的总结

我们在做程序的时候Datetime用到的也是非常的多,特别是经常要获取当前时间或是时间戳等,今天这章我们就把Datetime的里面进行一下总结。

62520
来自专栏Eureka伽罗的技术时光轴

条码扫描二维码扫描——ZXing android 源码简化

  最近公司的Android项目需要用到摄像头做条码或二维码的扫描,Google一下,发现一个以Apache License 2.0 开源的 ZXing项目。Z...

23920
来自专栏王念博客

mysql计算时间

一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); ...

32520
来自专栏技术探究-前端、Python、爬虫、数据分析、工具

14 Python 基础: 重点知识点--IO编程

IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁...

13860
来自专栏测试邦

接口测试| 揭秘接口测试工具集

接口测试是项目测试的一部分,正如其名,它测试的主要对象是接口,是测试系统组件间接口的一种测试

22230
来自专栏技术探究-前端、Python、爬虫、数据分析、工具

13 Python 基础: 模块的概念及使用方法并着重介绍两个常用模块

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。

13960
来自专栏技术探究-前端、Python、爬虫、数据分析、工具

12 Python 基础: 如何优化代码质量,错误、调试和测试你必须要懂.md

有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。

12530
来自专栏测试邦

python3环境搭建及绘图

新建系统变量PATH_HOME,变量值配置为python.exe所在路径,配置完成后再Path末尾添加;%PYTHON_HOME%;%PYTHON_HOME%\...

9150
来自专栏微卡智享

SQL Server分区表(四):删除(合并)一个分区

在前面我们介绍过如何创建和使用一个分区表,并举了一个例子,将不同年份的数据放在不同的物理分区表里。具体的分区方式为:

28220

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励