Python 第二十一章

# 面向过程编程vs函数
# 普通函数
s1 = "1234355"
count = 0
for i in s1:
    count +=1
print(count)

# 函数,减少重复代码,增强可读性
s1 = "1234355"
l1 = [i for i in range(10)]
def my_len(argv):

    count = 0
    for i in argv:
        count += 1
    print(count)

# 面形对象编程
"""
学习面向对象站在一个上帝的角度去分析考虑问题
类:具有相同属性和功能的一类事物
对象:某个类的具体体现,具体到某一个
面向对象
优点1: 将相似功能的函数,同一个业务下的函数进行归类,分类
优点2:在上帝的角度构建代码,类就是一个公共的模版,对象就是某个版本实例化出来的
得到对象就得到了一切
"""
# 面向对象优点 将相似功能的函数,同一个业务下的函数进行归类,分类
class Auth:
    # self 位置参数
    # 放登录,注册,密码 等相似功能
    def login(self):
        pass

    def register(self):
        pass

    def change_pwd(self):
        pass

class Shopping:
    def shopping_car(self):
        pass

    def check_paid_goods(self):
        pass

    def check_unpaid_goods(self):
        pass
# 类的具体结构
class Human:
    """
    类的具体结构
    """
    # 第一部分:静态属性\静态字段
    mind = '思想' # 类的属性
    language = "使用语言"
    # 第二部分:动态方法
    # 类里面的函数是方法
    def work(self):
        print("工作")
    def eat(self):
        print("吃饭")

# 实例化的具体结构
class Human:
    """
    实例化的具体结构
    """
    # 第一部分:静态属性\静态字段
    mind = '思想' # 类的属性
    language = "使用语言"

    # 开辟一个新的对象空间
    def __init__(self):
        # print(f'{self}') # 自动执行__init__方法,并将对象地址传给self
        self.name = 'zhangsan' #self.属性名 = '' 可直接赋值
        # 运行__init__方法中的代码,给对象空间封装属性
    #

    # 第二部分:动态方法
    # 类里面的函数是方法
    def work(self):
        print("工作")
    def eat(self):
        print("吃饭")
obj = Human() # 类名()实例化过程

# print(f'obj--->{obj}')
# 得到一个返回值,这个返回值就是对象实例
print(obj.__dict__)

"""
obJ=类名+()实例化过程 开辟一个对象空间
得到一个返回值,这个返回值就是对象
实例化对象发生了三件事:
1、开辟一个对象空间
2、自动执行__init__方法,并将对象的地址传给self
3、运行__init__方法内的代码,给对象空间封装属性
"""

# 实例化的具体结构2
class Human:
    """
    实例化的具体结构
    """
    # 第一部分:静态属性\静态字段
    mind = '思想' # 类的属性
    language = "使用语言"

    # 开辟一个新的对象空间
    def __init__(self,name):# self 默认参数 name参数
        # print(f'{self}') # 自动执行__init__方法,并将对象地址传给self
        self.n = name #self.属性名 = 属性值
        # 运行__init__方法中的代码,给对象空间封装属性
    #

    # 第二部分:动态方法
    # 类里面的函数是方法
    def work(self):
        print(f'{self.n}工作') # 格式化 得到name的值
    def eat(self):
        print("吃饭")
obj = Human('zhangsan') # 类名()实例化过程 将zhangshan的值传给name
print(obj.__dict__)

obj.work() # 调用work函数

# print(f'obj--->{obj}')
# 得到一个返回值,这个返回值就是对象实例

"""
代码
"""
"""

class 就是一个类,类名是驼峰体构建
类的具体结构
属性和方法

"""

class Human:
    """
    类的结构
    """
    # 第一部分:静态属性\静态字段
    mind = '思想' # 类的属性
    language = "使用语言"

    # 第二部分:动态方法
    # 类里面的函数是方法
    def work(self):
        print("工作")
    def eat(self):
        print("吃饭")

"""
1、类名操作类中的属性  万能的点.
    1.查看所有:类名.__dict__  查看类中所有的内容
    2.增:类名.属性 = ''  类名操作类中的静态属性
    3.删:del 类名.属性
    4.改:类名.属性 = ''
    5.查:类名.属性
"""

# 查看:类名.__dict__   查看类中所有的内容
print(Human.__dict__)

# 增:类名.属性 = ''  类名操作类中的静态属性
Human.body = '头四肢'
print(Human.__dict__)

# 删:del 类名.属性
del Human.mind
print(Human.__dict__)

# 改:类名.属性 = ''
Human.language = '使用语言为中文'
print(Human.__dict__)

# 查:类名.属性
print(Human.language)

"""
2、类名调用 类中的方法(一般类中的(静态方法和类方法)方法不会通过类名调用)
一般类名就是操作类中的静态属性
"""
class Human:
    mind = '1'
    body = '2'
    def __init__(self,name,age): # 讲对象空间(内存地址)传给了__init__方法的第一个位置参数self
        # __init__特殊的方法 自动通过self 给对象空间添加属性
        self.n = name # self.n属性名 添加name属性值
        self.a = age  # self.a 添加age属性
        # 增加键值对,输出的类型为{'name' = 'zhangshan'}
        print(self) # __init__的内存地址
        print(f'self-->{self}')
    def work(self):
        print("3")
    def eat(self):
        print("4")
obj = Human("zhangsan",18) # 实例化对象 类名+(赋值给__init__) 只要实例化对象,自动执行__init__方法
print(obj.n) # 打印n
print(obj.a) # 打印a
print(obj.__dict__) # 查看全部属性

"""
self是什么
1、self 本身就是类中的方法的第一个位置参数 ,可以是任意名
2、自动的接受对象的内存地址
"""

# 1、对象查看对象的空间的所有属性
obj = Human('zhangsan',18)
print(obj)

# 增 对象名 = 类名(属性)
obj = Human('lisi',18)
# 删 del 对象名.属性
del obj.a
# 改 对象名.属性 = 值
obj.a = 1000
# 查 对象名.属性
print(obj.n)
print(obj.__dict__)

# 2、 对象查看类中的属性,只能查看
print(obj.mind)
print(Human.mind)

# 3、 对象调用类中的方法 谁调用这个方法,就把属性传给谁
obj = Human("zhangzhang",19)
print(f'obj-->{obj}')
obj.work()
obj.eat()

# 4、 一个类可以实例化多个对象
obj1 = Human('1',2)
obj2 = Human('2',3)
obj3 = Human('3',4)

# 函数传参,类传参
# 隐式传参,显式传参

原文地址:https://www.cnblogs.com/zhangshan33/p/11306350.html

时间: 2024-08-29 12:35:30

Python 第二十一章的相关文章

2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(一) table、entity、service、dao

原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第二十一章 授予身份与切换身份(一) 1.使用场景 某个领导因为某些原因不能访问一些网站,他想把这个网站上的工作委托给秘书,但是他又不想提供账户.密码.此时可以使用shiro的 RunAs 功能. RunAs:允许一个用户假装为另一个用户(如果获得了允许)的身份进行访问. 注意,本章代码基于<第十六章 综合实例>,详细的数据模型及基本流程见该章. 2.表及数据

从零开始的linux 第二十一章(Inode以及Block详解其二与软链接)

从零开始的linux 第二十一章 在紧张的学习中,又迎来了新的一周~~小编也在同学们的迫切要求下继续来更新博客咯~~ 同学们:"我们才没要求你!" 唉??同学们一点都不配合呢~~别不好意思嘛~~ 好啦~不逗你们了,小编就节省大家的时间,赶快开始这章的课程吧~~ 在上一章中,小编给同学们讲了 Inode号 和 Block,不过还没有给同学们讲完哦~所以上一章的题目是 其一 ,那么毫无疑问这一章就是其二的内容咯~从上一章同学们已经了解了什么是Inode和Block,以及Inode中包含哪些

Python第二十一课(反射/元类)

Python第二十一课(反射/元类)    >>>思维导图>>>中二青年 反射reflect 什么是反射, 其实是反省,自省的意思 反射指的是一个对象应该具备,可以检测,修改,增加自身属性的能力 反射就是通过字符串操作属性 涉及的四个函数,这四个函数就是普通的内置函数 没有双下划綫,与print等等没有区别 hasattr getattr setattr delattr p = Person("jack",18,"man") #

第二十一章

孔德之容,唯道是从.道之为物,唯望唯沕.沕呵望呵,中有象呵:望呵沕呵,中有物呵:幽呵冥呵,中有精呵:其精甚真,其中有信.自今及古,其名不去,以顺众父.吾何以知众父之然也?以此. “   孔德之容”,大德的这种运动“唯道是从”,它只是去追随道的运转,或者是按照道的这个运转规律去运转,所以老子在这讲出来道是德的内在动力,德是道的外在体现,大德,德行的这种运动完全是按照道的规律去运转的,叫唯道是从.您如果懂得了道的原理,您就能够从容的去做这个德了 沕是深远的意思,那个望是辽阔辽远的意思,没有边界,这个

C#高级编程第11版 - 第二十一章

导航 C# 全版本特性一览 全书目录 第二十一章 Tasks and Parallel Programming 21.1 概述 459 21.2 Parallel 类 460 21.2.1 使用Parallel.For()方法循环 460 21.2.2 提前中断Parallel.For 462 21.2.3 Parallel.For()方法的初始化 462 21.2.4 使用Parallel.ForEach()方法循环 463 21.2.5 通过Parallel.Invoke()方法调用多个方法

第二十一章 命名空间和程序集

命名空间和程序集引用其他程序集mscorlib库命名空间命名空间名称命名空间的补充命名空间跨文件伸展嵌套命名空间using 指令using命名空间指令using别名指令程序集的结构程序集标识符强命名程序集创建强命名程序集程序集的私有方式部署共享程序集和GAC把程序集安装到GACGAC内的并肩执行配置文件延迟签名 命名空间和程序集 引用其他程序集 在第1章中,我们在高层次上观察了编译过程.编译器接受源代码文件并生称名称为程序集的输出文件.这一章中,我们将详细阐述程序集以及它们是如何生成和部署的.你

TCP/IP详解 卷1 第二十一章 TCP的超时与重传

21.1 引言 可靠性的保证之一就是超时重传 前面两个超时重传的例子 1)  ICMP端口不能到达时,TFTP客户使用UDP实现了一个简单的超时和重传机制,假定5s是一个适当是时间间隔,并每隔5s进行重传 2)  在向一个不存在的主机发送ARP的 例子中,可看到当TCP试图建立连接的时候,在每个重传之间使用一个较长的时延来重传SYN 对于每个连接,TCP管理4个不同的定时器: 1)  重传定时器使用于当希望收到另一端的确认 2)  坚持(persist)定时器使窗口大小信息保持不断流动,即使另一

第二十一章、使用查询表达式来查询内存中的数据

什么是语言集成查询(LINQ) 对从应用程序代码中查询数据的机制进行了“抽象”.这个功能称为“语言集成查询”(Language Integrated Query). LINQ的设计者大量借鉴了关系数据库管理系统(例如Microsoft SQL Server)的处理方式,将“数据库查询语句”与“数据在数据库中的内部格式”分隔开.LINQ的语法和语义和SQL很像,具有许多相同的优势.要查询的数据的内部结构发生改变后,不必修改查询代码.注意,虽然LINQ和SQL看起来很像,但LINQ更加灵活,而且能处

《FPGA全程进阶---实战演练》第二十一章 电源常用类型:LDO和 DCDC

高速电路中的电源设计 高速电路中的电源设计大概分为两种,一种是集总式架构,一种是分布式架构.集总式架构就是由一个电源输入,然后生成多种所需要的电压.如图1所示.这种架构会增加多个DC/DC模块,这样成本不可控,PCB面积也需要增加,但集总式分布架构可以提高整体电源转换效率. 图1 集总分布架构 分布式架构是先由一个模块生成一个中间电压,然后再去转换成其他单板所需要的电压,如图2所示.第一级输出可以要求有较大的噪声和纹波,第二级电源输出所需要的各种电源,这时必须考虑纹波和噪声问题.但分布式也有一个