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.
原文地址:https://www.cnblogs.com/failan/p/13661211.html