zoukankan      html  css  js  c++  java
  • python面向对象,类和对象

        面向对象

            现实事物 -抽象-> 类(模板) -具体-> 对象
    # 老婆类
    class Wife:
        # 数据
        def __init__(self, name, height=160, face_score=90):
            self.name = name
            self.height = height
            self.face_score = face_score
        # 行为
        def play(self):
            print(self.name, "在玩耍")
    # 创建对象(调用__init__函数)
    jn = Wife("建宁", 170, 96)
    # 读取对象的颜值
    print(jn.face_score)
    # 调用对象的行为
    jn.play() # play(jn)

        实例成员

            实例变量:对象的数据

                每个对象存储一份

            实例方法:对象的行为

     面向过程

    name = "建宁"
    age = 26
    
    def print_self():
        print("我叫:", name, "今年", age, "岁了")
    
    print_self()

    面向对象

    写法1:
    class Wife:
        def __init__(self, name="", age=0):
            # 创建实例变量
            self.name = name
            self.age = age
        # 实例方法:操作实例变量
        def print_self(self):
            print("我叫:", self.name, "今年", self.age, "岁了")
    
    jn = Wife("建宁")
    # 读取实例变量
    print(jn.name)
    # 该变量存储的是对象所有数据成员
    #  {'name': '建宁'}
    print(jn.__dict__)
    # jn.__dict__["name"] = "建宁公主"
    jn.name = "建宁公主"
    print(jn.name)
    写法2: 不建议(应该在类内创建实例变量)
    class Wife:
        pass
    
    jn = Wife()
    # 创建实例变量
    jn.name = "建宁"
    # 读取实例变量
    print(jn.name)
    写法3:不建议(应该在构造函数中创建)
    """
    class Wife:
        def set_name(self, name):
            self.name = name
    jn = Wife()
    jn.set_name("建宁")
    # 读取实例变量
    print(jn.name)
    """
    ak = Wife("阿柯", 25)
    ak.print_self()  # print_self(ak)
    # 如果通过类名调用实例方法,必须手动传递对象地址
    Wife.print_self(ak)

        类成员

            类变量

            类方法

    class ICBC:
        # 类变量:总行的数据
        total_money = 1000000
        # 类方法:操作类变量
        @classmethod
        def print_total_money(cls):
            # cls 与 类名 相同
            # print(ICBC.total_money)
            print("总行有%d元" % cls.total_money)
        def __init__(self, name="", money=0):
            # 构造函数执行,意味着创建了一家支行
            # 实例变量:某一支行的数据
            self.name = name
            self.money = money
            # 总行的钱减少
            ICBC.total_money -= money
    
    tiantan = ICBC("天坛支行", 100000)
    # print(ICBC.total_money)
    ICBC.print_total_money()
    taoranting = ICBC("陶然亭支行", 200000)
    # print(ICBC.total_money)
    ICBC.print_total_money()
    # 全局变量:在文件中创建,全文件可用.
    data01 = 10
    
    def func01():
    # 局部变量:在函数中创建,函数内部可用.
        data02 = 20
    
    class MyClass:
    # 类变量:在类中创建,通过类名访问
        data04 = 40
        def __init__(self):
    # 实例变量:在构造函数中通过对象创建,通过对象访问.
            self.data03 = 30
    
    m01 = MyClass()
    print(m01.data03)
    实例成员 与 类成员
        class 类名:
            变量名1 = 数据           # 创建类变量
            def __init__(self):
                self.变量名2 = 数据  # 创建实例变量
            @classmethod           # 类方法:操作类变量
            def 方法名1(cls):
                通过cls操作类变量
                不能操作实例成员
            def 方法名2(self):      # 实例方法:操作实例变量
                通过self操作实例变量
                能操作类成员
        访问类成员
            类名.变量名1
            类名.方法名1()
        访问对象成员
            对象 = 类名()
            对象.变量名1
            对象.方法名1()
    Live what we love, do what we do, follow the heart, and do not hesitate.
  • 相关阅读:
    2.airflow参数简介
    KETTLE元数据表
    KETTLE监控
    KETTLE设置变量
    KETTLE集群搭建
    KETTLE并行
    Android TextView setText内嵌html标签
    Android Fragment实现分屏
    Java基础之String,StringBuilder,StringBuffer
    踩过的坑之-----selector
  • 原文地址:https://www.cnblogs.com/failan/p/13661211.html
Copyright © 2011-2022 走看看