• 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.局部变量

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

  • 相关阅读:
    pom.xml基础配置
    Maven零散笔记——配置Nexus
    搭建局域网maven仓库
    java 加密解密
    菠萝大象--sping
    (转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
    eclipse 如何把java项目转成web项目
    Effective Java
    More Effective C++
    Effective C++
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12218482.html
Copyright © 2020-2023  润新知