• python类属性和实例属性(类变量和实例变量)


    在类中,根据变量定义的位置不同,以及定义的方式不同,类属性又可以细分为以下三种类型:

    1. 类体中,所有函数之外:类属性(类变量)
    2. 类体中,所有函数内部,以“self.变量名”的方式定义的变量:实例属性(实例变量)
    3. 类体中,所有函数内部,以“变量名 = 变量值”的方式定义的变量:局部变量

    1.类变量

    所有类的实例化对象都同时共享类变量。类变量的调用方法有两种,既可以使用类名直接调用,也可以使用类的实例化对象调用(此方法不推荐使用)。

    class Person:
        name = "xiaobai"
        age = 10
        def __init__(self, name, age):
            self.name = name
            self.age = age
    #使用类名直接调用
    print(Person.name)
    print(Person.age)
    #通过类名修改类变量的值
    Person.name = "lilei"
    Person.age = 20
    print(Person.name)
    print(Person.age)
    #执行结果
    xiaobai
    10
    lilei
    20
    

    2.实例变量

    只作用于调用方法的对象。实例变量只能通过对象名访问,无法通过类名访问。

    class Person:
        def __init__(self):
            self.name = "xiaobai"
            self.age = 10
        def say(self):
            self.content = "i love python"
    #name、age以及content都是实例变量。Person类的类对象都会包含name和age实例变量,只有调用了say()方法的类对象才会包含content实例变量。
    mary = Person()
    print(mary.name)
    print(mary.age)
    mary.say()
    print(mary.content)
    #执行结果
    xiaobai
    10
    i love python
    
    实例变量和类变量可以同名,但这种情况下使用类对象无法调用类变量,它会首选实例变量。
    
    class Person:
        name = "lilei"
        def __init__(self):
            self.name = "xiaobai"
            self.age = 10
        def say(self):
            self.content = "i love python"
    mary = Person()
    print(mary.name)
    #执行结果
    xiaobai
    

    3.局部变量

    局部变量只能用于所在函数中,函数执行完成后,局部变量也会被销毁。

  • 相关阅读:
    IE7下总提示" 缺少标识符、字符串或数字"
    #pragma 用法
    破解win7开机密码
    教你怎么样设计一块好的PCB板精华教程
    Object reference not set to an instance of an object. 'Infinity' is not a valid value for property 'width'.
    验证时出错,HRESULT = '8000000A'
    WIN7打补丁后VS2012出现版本不兼容
    VS的快捷键
    WPF学习记录1:ListView的一个模板
    使用Xposed Installer实现Android Hook
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12218482.html
Copyright © 2020-2023  润新知