day24

一,复习

1. xml模块
    解析xml格式的文档
    可扩展的标记语言
    <tag name="123" >text</tag>

    <tag1>
        <tag2>
        </tag2>
    </tag1>
    <tag/>

    1. tree =  ElementTree.parser("文件路径")
    root = tree.getroot()
    root.iter/find/findall
    直接遍历某标签 取出所有子级

    element.text = ""
    element.tag = "xxx"
    element.set("k","v")

    要删除需要先找父级
    父级.remove(子标签对象)

    父级.append(子标签)

    tree.write("路径")

2.面向对象的基本概念
    是一种编程思想,
    优点:扩展性高,复用性强,可维护性好
    缺点:编程复杂度提高了,需要先设计,结果无法准确预知
    使用场景:对扩展性要求高的程序


    面向过程:
    优点:复杂问题简单化,流程化
    缺点:扩展性极低,牵一发动全身,维护性相比OOP低
   使用场景:对扩展性要求低的程序
    将程序员从一个具体的操作者转变为指挥者

3.类与对象的关系
    对象是  具备某些特征和行为的结合体,是具体存在的某个事物
    类 某些具备相同特征和相同行为的集合体,是一种抽象概念

    创建类的语法
    class  大驼峰命名:
        属性用变量标识 (数据属性)
        名称=值

        行为用函数表示 (函数属性/方法)
        def 函数名称

     创建对象
        类名加括号
        Person()

4.属性的访问顺序
   优先访问对象自己的 如果没有 再访问类中的



#今日内容
__init__函数 *****
绑定方法和非绑定方法 *****
## 类属性与对象属性

类中应该仅存储所有对象共有的内容

​    如所有人的国籍相同那就放到类中

对象中存储每个对象独有的内容

​    如每个人的名字都不同

## __init__方法的作用

init 是初始化的缩写 用于为对象的属性设置初始值

特点:

```
# 执行时机:当实例化产生对象时会自动执行该函数
# 会自动传入需要初始化的对象
# 初始化必须包含至少一个参数 用于表示对象本身
# 该函数不允许有返回值 必须为None
```
# __init__方法的使用



class Dog:
    # 执行时机:当实例化产生对象时会自动执行该函数
    # 会自动传入需要初始化的对象
    # 初始化必须包含至少一个参数 用于表示对象本身
    # 该函数不允许有返回值
    def __init__(self,age,name,**kwargs):
        # print("init run")
        # print(self)
        self.age = age
        self.name = name



# d = Dog() # === Dog.__init__(d)
# # print(Dog.__init__)
# # print(d)
# # print(d.age)

# Dog()

d1 = Dog(1,"大花")
d2 = Dog(2,"校花")

print(d1.name)
print(d2.name)




## 绑定方法

绑定即两个东西绑在一起 

方法就是函数  

那就是说绑定方法 == 绑定函数

默认情况下 在类中定义的方法 都是绑定方法

绑定方法 是把函数和对象绑定到一起 

为什么要绑定:

每个应用程序其实本质上都是在处理数据,那就必须明确 要处理的数据在哪里,如何处理 

绑定方法的好处在于,将需要处理的数据 以及处理数据的方法绑定在一起,这样一来 当你获得一个对象就同时获得 数据以及 相应的处理方法 ,简单的调用即可



### 绑定方法与普通函数的区别

当使用类调用时,就是一个普通函数 有几个参数就得传几个参数

当用对象来调用时,是一个绑定方法了,会自动将对象作为第一个参数传入



一个类中可以有属性和方法 

方法分为两种

1.绑定方法

​    1.1对象绑定方法

​    在使用对象调用时会自动传入对象本身

​    1.2类绑定方法

​    @classmethod

​    在使用对象调用时会自动传入类本身

​    在使用类来调用时也会自动传入类本身

​    单例模式中就会经常使用@classmethod



到底绑定给谁?

当你的方法执行过程中需要使用到对象中数据时就绑定给对象

当你的方法执行过程中需要使用到类中数据时就绑定给类



2.非绑定方法

即不需要对象中的数据 也不需要类中的数据  那就定义为非绑定方法,就是普通函数

@staticmethod




oop知识点:

1.属性应该放在类中还是对象中 

2.绑定方法  == 绑定函数 

对象绑定方法

​    对象调用时 自动传入对象本身

​    类调用时不会自动传参 有几个就需要传几个 

类绑定方法

​    @classmethod

​    无论是对象还是类调用 都会自动传入类本身 

非绑定方法(静态方法)

​    @staticmethod

​    谁调用都不会自动传参 

## 在使用面向对象编程时  首先要想的时 需要什么对象,这些对象具备什么样的属性和什么样的行为,根据属性和行为创建对应的类

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python动态绑定属性slots的使用

    当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。废话不多说,我们看一个例子:

    py3study
  • Python 绑定方法与非绑定方法

      import uuid  --------------  uuid是128位的全局唯一标识符, 通常用32位的一个字符串的形式来表现

    py3study
  • python模拟鼠标点击window图标

    py3study
  • SpringMVC:数据绑定入门(-)

    1.数据类型,可以绑定基本数据类型,如int age,或者包装类型如:Integer age;

    Dar_Alpha
  • 学习WPF——元素绑定

    概念 从源对象提取一些信息,并用这些信息设置目标对象的属性 示例 image.png image.png 数据绑定表达式使用XAML的标记扩展(因此具有花括号)...

    liulun
  • Mac开发之 Cocoa 绑定 入门

    从iOS开发转为Mac OSX应用开发的过程中,cocoa 绑定算是比较大的一个差异,也是OSX上比较实用的技术,cocoa 绑定让开发者节省了大量的代码,可以...

    代码行者
  • 2019-2-13-wcf入门(15)

    绑定是用于配置wcf如何进行endpoint的对象,其包括协议配置(如2019-2-12-wcf入门(14) - huangtengxiao用到的可靠会话配置)...

    黄腾霄
  • MvvmCross 框架中的数据绑定语法

    数据绑定一直是 MvvmCross (Mvx) 框架的核心, 随着 Mvx 版本的版本更新, 绑定语法由 Json 变化到了 Swiss 语法, 并逐渐向 Ti...

    beginor
  • WPF 笔刷绑定不上可能的原因

    在 WPF 中如背景色等都是使用笔刷,在使用绑定的时候可能绑定不上,本文告诉大家绑定不上可能的原因和调试方法

    林德熙
  • WCF系统内置绑定列表与系统绑定所支持的功能

    莫问今朝

扫码关注云+社区

领取腾讯云代金券