python学习第二十二章

今日内容:

1.属性

2. 类方法

3.静态方法

4.反射

1. 属性

是指调用类中的函数,就像调用对象属性值一样调用.更权威解释:将方法 伪装 成属性,虽然在代码层面上没有任何高深之处,但是让其看起来更合理.

示例:

class A:
    def __init__(self,*args):
        self.name = args[0]
        self.height = args[1]
        self.weight = args[2]
    @property
    def bmi(self):
        return self.height /self.weight**2

a1 = A("leon",1.72,60)
print(a1.bmi)

注意,这里是通过加@property  这个装饰器来实现的,

即然是属性,那么也可以修改的,关于修改和删除,是通过下面方法实现的,

示例:

class B:
    def __init__(self,*args):
        self.name = args[0]
        self.__pwd = args[1]
    @property
    def pwd(self):
        return  self.__pwd
    @pwd.setter   #注意这里的装饰器名字和上面的函数名一致,以及下面的函数都是一致的,下面赋值会传入这个new_pwd里面
    def pwd(self,new_pwd):
        self.__pwd = new_pwd
obj1 = B("leon","hao123")
obj1.pwd = 123456
print(obj1.pwd)

属性的删除操作示例:

class B:
    def __init__(self,*args):
        self.name = args[0]
        self.__pwd = args[1]
    @property
    def pwd(self):
        return  self.__pwd
    @pwd.setter   #注意这里的装饰器名字和上面的函数名一致,以及下面的函数都是一致的,下面赋值会传入这个new_pwd里面
    def pwd(self,new_pwd):
        self.__pwd = new_pwd
    @pwd.deleter
    def pwd(self):
        del self.__pwd
obj1 = B("leon","hao123")
obj1.pwd = 123456
print(obj1.pwd)
del obj1.pwd
print(obj1.pwd)

具体操作流程如下:

# 第一步,对属性进行改操作,自动执行 被这个@pwd.setter装饰器装饰的方法
# 第二步,将新值传给这个被@pwd.setter装饰器装饰的方法里面,当做参数.

2. 类方法,静态方法

类方法:类名去调用类方法,自动将类的空间传给类方法中的cls..对象如果调用类方法,自动将类空间传给类中的cls

示例:

class C:
    num = 1
    def __init__(self,*args):
        self.name = args[0]
        self.age  = args[1]
    @classmethod
    def class_fun(cls):
        print(cls.num)
c1 = C("leon",18)
c1.class_fun()

 什么情况下使用类方法?
 直接让类去操作类中的方法,没有必要创建对象在操作的时候,用类方法.

3. 静态方法

静态方法:在类中定义一个静态方法,无需传入你的类空间,对象空间,可以当成普通函数去用.(也就是不用再传入self的,也就是类中的独立函数)

示例:

class D:
    def __init__(self):
        pass
    @staticmethod
    def fun(a,b):
        return a + b
d1 = D()
print(d1.fun(2,3))

 4.反射(非常非常重要,)

反射:通过 字符串 操作一个空间 (对象).

总共有四个方法:

1.getattr()

2.hasattr()

3.setattr()

4.delattr()

四种场景的不同使用方法:

1,实例化一个对象去研究

   

原文地址:https://www.cnblogs.com/ahliucong/p/9259686.html

时间: 2024-08-28 10:12:35

python学习第二十二章的相关文章

Python学习第二十二课——Mysql 表记录的一些基本操作 (增删改)

记录基本操作: 增:(insert into) 基本语法: insert into 表名(字段) values(对应字段的值): 例子1: insert into employee(id,name,age,salary) values(1,"憨憨",24,5000); 指定添加insert into employee values(2,"憨憨",0,24,"技术部",5000); 对应添加 insert into employee set nam

进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来

“全栈2019”Java第二十二章:控制流程语句中的决策语句if-else

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第二十二章:控制流程语句中的决策语句if-else 下一章 "全栈2019"Java第二十三章:流程控制语句中决策语句switch上篇 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf

第二十二章 TCP/IP层的实现

                      第二十二章    TCP/IP层的实现        我比较喜欢先难后易,如果把GPU显示管理.和网络管理拿下后:我会从头整理.改写一遍APO操作系统.这样,就会形成APO操作系统的锥形.也获得了全局观.内核CPU线路.和用户CPU线路,你可以将它们看成是独立的2个32位CPU核:内核CPU主要任务是实时处理.硬件中断,256个实时线程包含了一些中断程序的后半部.用户CPU主要是动态优先级进程.线程调度,各种应用程序的运行:2个核之间是通过消息交互.句

Gradle 1.12用户指南翻译——第二十二章. 标准的 Gradle 插件

其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,兼容

python学习[第十二篇] 数据类型之 集合

python学习[第十二篇] 数据类型之 集合 集合概念 python中集合是一组无序排列的哈希值.集合分为两种可变集合(set)和不可变集合(frozenset) 对可变集合可以修改和删除元素,对于不可变集合不允许.可变集合是不可以哈希的,因此既不能用作字典的键,也不能做其他集合的元素. 集合的增删改查 集合的创建于赋值 集合与列表([]) 和字典({})不同,集合没有特别的语法格式.列表和字典可以通过他们自己的工厂方法创建,这也是集合的唯一的创建方式.set()和frozenset() #创

第二十二章 Linux文件比较,文本文件的交集、差集与求差:comm命令

第二十二章 Linux文件比较,文本文件的交集.差集与求差:comm命令 名词解释 comm 命令 可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集.求差.差集操作. 交集:打印两个文件所共有的行 求差:打印出指定文件所包含的其不相同的行. 差集:打印出包含在一个文件中,但不包含在其他指定文件中的行. 语法 comm(选项)(参数) 选项 -1 :不显示在第一个文件出现的内容: -2 :不显示在第二个文件中出现的内容: -3 :不显示同时在两个文件中都出现的内容. ? 参数

20190925 On Java8 第二十二章 枚举

第二十二章 枚举 基本 enum 特性 创建 enum 时,编译器会为你生成一个相关的类,这个类继承自 Java.lang.Enum. valueOf() 是在 Enum 中定义的 static 方法,它根据给定的名字返回相应的 enum 实例,如果不存在给定名字的实例,将会抛出异常. 将静态类型导入用于 enum 使用 static import 能够将 enum 实例的标识符带入当前的命名空间,所以无需再用 enum 类型来修饰 enum 实例. 方法添加 除了不能继承自一个 enum 之外

WP8.1学习系列(第二十二章)——在页面之间导航

在本文中 先决条件 创建导航应用 Frame 和 Page 类 页面模板中的导航支持 在页面之间传递信息 缓存页面 摘要 后续步骤 相关主题 重要的 API Page Frame NavigationCacheMode 本主题将讨论基本的导航概念,并演示如何创建一个在两个页面之间进行导航的应用. 有关为你的应用选择最佳导航模式的帮助,请参阅导航模式. 在操作时请参阅平面导航和分层导航模式,它们是应用功能大全系列的一部分. 路线图: 本主题与其他主题有何关联?请参阅: 使用 C# 或 Visual