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.
  • 相关阅读:
    【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】
    【模拟题(63550802...)】解题报告【贪心】【拓扑排序】【找规律】【树相关】
    【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
    IMemoryBufferReference and IMemoryBufferByteAccess
    SoftwareBitmap and BitmapEncoder in Windows.Graphics.Imaging Namespace
    Windows UPnP APIs
    编译Android技术总结
    Windows函数转发器
    Two Ways in Delphi to Get IP Address on Android
    Delphi Call getifaddrs and freeifaddrs on Android
  • 原文地址:https://www.cnblogs.com/failan/p/13661211.html
Copyright © 2011-2022 走看看