zoukankan      html  css  js  c++  java
  • python第十五天

    class  类的定义

    python中类的学习, 相比编译型语言中的类,似乎更难理解,

    因为 太灵活了, 或者说太不安全了

    先来一个简单的  Person 类定义

    1 class Person:        类名 是 Person,  注意 后面更 :
    2     head = 1         head  和 ear  被称为 类的静态变量,  人类的共性, 头 有 1个, 耳朵 2个
    3     ear = 2
    4     
    5     def eat(self):  eat 函数, 也称为 类的静态方法
    6         print('在吃饭')

    所谓 加了 静态,  就是说 这些加了静态的东西, 是属于 类的, 类可以使用 他们

    1 print(Person.head)    1
    2 print(Person.ear)     2
    3 Person.eat(111)      在吃饭

    Object-C 有 点语法 的说法, python 也可以借用一下.

    点 ' . ' 的前面是类名, 代表 拥有者,  像 Person 拥有 hear, Person 拥有 ear, 

    Person中 没有定义 名字叫 hand的变量,  就不能调用, 直接 调用一个没有的东西,  Person.hand  运行程序就会报错.

    特点之一: 静态的变量可以修改

    1 Person.head = 4
    2 Person.ear = 8
    3 
    4 print(Person.head)    4
    5 print(Person.ear)     8

    有点惊讶,  从 '静态' 字面的理解, 就是 动态 的另一面, 不能修改,

    而python 尽然可以如此轻易就修改了, 意味着在程序任何地方, 只要知道 类名, 就可以修改 类变量 中的值,

    在团队合作开发中, 这极其不安全. 设想一下, 一个小伙伴改了, 另一个小伙伴用了,肯定就出错了.

    所以,  对于 ptyhon,  类中 定义的静态变量,  叫 类中的变量 , 更适合

    特点之二:  类中定义的变量, 可以删除

    1 del Person.head       删除 指令, 删除 Person 类 中 定义的 head 变量
    2 
    3 print(Person.head)    error: type object 'Person' has no attribute 'head'

    这在编译型语言看来, 可能是无法想象的

    特点之三:  类中定义的变量, 还可以随时增加

    1 Person.hand = 2
    2 
    3 print(Person.hand)     2

    可以调用 __dict__ , 在 hand 变量, 增加 前 后, 进行验证

    print(Person.__dict__)

    特点之四: 类 中的方法定义, 第一个参数, 都要加上 self 关键字

                  类名, 也可以通过点语法, 调用 类中定义的方法

    Person.eat(111)      在吃饭

    使用类名调用类中定义的方法时,  关于传值, 必须传值,  传什么都可以,  类中的方法, 就被调用了

    程序在执行 遇到 类定义时, 是如何操作的呢?

    会开辟一个 新的内存空间, 程序 类的空间, 名字 就叫Person.

    在这个空间存放着, 变量名 和 变量中值的地址 的对应关系

    在python中, 函数名, 也是一个变量,

    所以, 在这个 类空间中, 也只存在, 函数名 和 函数具体执行代码 的 地址

    并不会存在具体的 函数执行代码

    既然函数名也是一个变量, 也可以试试, 对其 进行增删改查.

  • 相关阅读:
    numpy 支持切片取值,使用ix_ 也可以取到
    pyinstaller 打包文件成 exe
    matplotlib 直方图概率不为1
    小提琴图 ValueError: object arrays are not supported
    pip 生成 requirements.txt
    CF1515E(连续段 dp)
    Lg7 月赛(构造,树形 dp)
    [省选联考 2020 A 卷] 组合数问题 题解报告
    愤怒的小 N 题解报告
    CF32E 题解
  • 原文地址:https://www.cnblogs.com/golzn2018/p/9531079.html
Copyright © 2011-2022 走看看