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)


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

猜你喜欢

转载自www.cnblogs.com/zhangshan33/p/11306350.html
今日推荐