python入门(10)

python入门(10)

类属性

类属性的定义与特点

类属性与实例属性的特点:

  • 类属性:类对象拥有的属性,被类对象实例对象共同拥有,内存中存在一份副本,减少资源
class BmwCar(object):
    brand='BMW'
    def __init__(self,style,color):

        self.style=style
        self.color=color


if __name__ == '__main__':
    print("第一种方法:通过类对象进行访问")
    print(BmwCar.brand)
    print("第二种方法:通过实例对象访问")
    obj1=BmwCar("x1","white")
    print(obj1.brand)
class BmwCar(object):
    brand='BMW'
    __money=10
    _num=20
    def __init__(self,style,color):

        self.style=style
        self.color=color

    def printmony(self):
        print(self.__money)
        print(BmwCar.__money)

if __name__ == '__main__':
    print("第一种方法:通过类对象进行访问")
    print(BmwCar.brand)
    print(BmwCar._num)

    print("第二种方法:通过实例对象访问")
    obj1=BmwCar("x1","white")
    print(obj1.brand)
    print(obj1._num)
    print(obj1.printmony())
  1. 类属性的分类:
    • 公有类属性,保护类属性,私有类属性
  2. 私有类不可以在外部访问
  3. 在类的内部,可以通过方法访问

修改类属性

class BmwCar(object):
    brand='BMW'
    __money=10
    _num=20
    def __init__(self,style,color):

        self.style=style
        self.color=color

    def printmony(self):
        print(self.__money)
        print(BmwCar.__money)

if __name__ == '__main__':
    print("###########通过类对象进行修改###########")
    print(BmwCar.brand)
    BmwCar.brand="宝马"
    print(BmwCar.brand)

    print("######通过实例对象来修改")
    b1=BmwCar('x1',"red")
    b1.brand='大众' # 创建了一个新的动态实例属性
    print(b1.brand)
    print(BmwCar.brand)

注意点:

  1. 类属性通过类对象来修改
  2. 不可以通过shilling对象来修改,否则增加的是一个动态实例属性(init有这个字段,就覆盖)

类方法

类属性

class BmwCar(object):
    brand='BMW'
    __money=10
    _num=20
    def __init__(self,style,color):
        self.style=style
        self.color=color
    @classmethod
    def changemethod(cls):
        cls.brand="大众"
        print(cls)

if __name__ == '__main__':

    BmwCar.changemethod()
    print("类方法之后",BmwCar.brand)
    
    pass

注意点:

  1. 类方法的格式

    @classmethod

    def 方法名(cls):

    ​ pass

  2. 可以修改类属性

  3. 可以通过类对象访问,也可以通过实例对象访问

上一篇:综合工具支持的verilog关键字汇总


下一篇:Python对象组合