精华内容
下载资源
问答
  • 主要介绍了Python 属性与实例属性对象与实例对象用法,结合实例形式分析了java相关的属性、实例化、对象等相关概念与操作技巧,需要的朋友可以参考下
  • Python 类属性和实例属性

    千次阅读 2016-10-24 14:28:03
    Python 类属性和实例属性#

    Python 类属性和实例属性

    属性就是属于一个对象的数据或者函数元素,可以通过我们熟悉的据点属性标识法来访问。

    类属性

    类属性包含类的数据属性和方法属性(函数),类属性只与其定义的类相关。
    访问类的字典属性__dict__可以获得类属性。

    class Test(object):
        v = 0.1
    
        def test(self):
            pass
    
    >Test.__dict__
    >{'__module__': '__main__', '__dict__': <attribute '__dict__' of 'Test' objects>, 'v': 0.1, 'test': <function test at 0x2ee3cf8>, '__weakref__': <attribute '__weakref__' of 'Test' objects>, '__doc__': None}
    

    除了定义的v, test, __init__ 属性外,还有一些特殊的类属性。

    attributedesc
    __name__类的名字字符串
    __doc__类的文档字符串
    __bases__类的基类元组
    __dict__类的属性
    __module__类定义所在的模块
    __class__类对象对应的类

    实例属性

    类实例化后具有的属性,通过__dict__方法可以获取实例属性。

    class Test(object):
        v = 0.1
        def __init__(self):
            self.info = 'test'
    
    
    t = Test()
    >t.__dict__
    >{'info': 'test'}

    严格来说,实例属性应只包含数据属性。

    但其实我们可以给实例增加方法属性。

    class Test(object):
        pass
    
    t = Test()
    def fun():
        pass
    t.f = fun
    >t.__dict__
    >{'f': <function __main__.fun>}

    类属性和实例属性区别

    下面举几个例子说明类属性和方法属性。

    class Test(object):
        v = 1
    
    t = Test()
    print t.v       # 类属性,1
    print Test.v    # 类属性,1
    t.v = 2         # 修改实例属性,此处类属性不变(当且仅当实例属性为不可变对象)
    print t.v       # 实例属性,2
    print Test.v    # 类属性,1
    del t.v         # 删除实例属性
    print t.v       # 访问类属性,1
    Test.v = 2      # 修改类属性
    print Test.v    # 访问类属性,2
    print t.v       # 访问类属性,2

    注意:

    1.内建函数dir可以用来查看类属性和实例属性,但得到的内容比预期要多。
    2.虽然类属性不是实例属性,但类的实例可以访问类的属性。
    3.不要把实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。

    展开全文
  • 主要介绍了Python类属性与实例属性用法,实例分析了Python类属性与实例属性的功能、定义与使用技巧,需要的朋友可以参考下
  • 实例属性,还是.属性都没有问题 class experment(object): a = 1 # 此处为属性 def __init__(self, value): self.b = value #此处为实例属性 def fuc(self): print(self.b) e1 = experment(100) #创建...

    1:下面这段代码,通过对象.类属性,对象.实例属性,还是类.类属性都没有问题 

    class experment(object):
        a = 1 # 此处为类属性
        def __init__(self, value):
            self.b = value #此处为实例属性
        def fuc(self):
            print(self.b)
    
    e1 = experment(100)    #创建对象
    
    print(e1.a)
    print(e1.b)
    print(experment.a)
    
    1
    100
    1

    但是当加入如下代码:

    print(experment.b)
    
    AttributeError: type object 'experment' has no attribute 'b'

    则会报错,因为不能通过类名.属性名的方式去调用实例属性,当类实例化之后,只能实例对象去调用实例属性

     

    2:下面进行如下操作,输出结果如下

    experment.a += 1  #通过类名.类属性的方式去去修改类属性的值
    print(e1.a)
    print(experment.a)
    
    2
    2

     

    我们再继续下面的操作

    e1.a += 1   #通过对象.类属性的方式去修改类属性的值
    
    print(e1.a)
    print(experment.a)
    
    2
    1

    看到没有,对象.类属性的值已经改变,而类名.类属性的值没有变化,Why???。。。这个其实挺简单的,解释下:

    当我们使用实例对象名+类属性名,即 e1.a 的方式修改属性 a 的值时:相当于新建了一个 a 的副本,+1这个操作实际上是进行在这个 a 的副本上的,而当我们用类名+类属性名的方式调用 a 时,输出的其实是原封未动的类属性 a

    类可以看成一间样板房,没有装修时,你家买的房子其实各项参数和样板房都是一样的,但是你在你自己家放了一把火,把自家房子烧了,管样板房么事?

     

    3:接着说,在上面的代码上,我们不进行对a的任何重新操作,如下

    class experment(object):
        a = 1 # 此处为类属性
        def __init__(self, value):
            self.b = value #此处为实例属性
        def fuc(self):
            print(self.b)
    
    e1 = experment(100)    #创建对象
    
    print(id(e1.a))
    print(id(experment.a))
    
    140703385523872
    140703385523872

    可以看到,其实这个时候类属性 a 的地址还是只有一块的,无论是通过对象,还是类的方式来调用,都调用的是一块内存上的数据

    当我们加上如下代码

    experment.a =2
    print(id(e1.a))
    print(id(experment.a))
    
    e1.a = 3
    print(id(e1.a))
    print(id(experment.a))
    
    
    140703385523904
    140703385523904
    
    140703385523936
    140703385523904
    
    

    发现,通过类+类属性的方式来修改类属性的值后, 并没有COPY出来一块 a 的地址,但是,当我们用对象+类属性的方式去修改类属性的值后,多出来一块 ‘a’。

    总的来说,类和实例对象对于属性的修改权限其实就是作用域的问题,类有权限修改属性,而实例对象没有,于是,实例对象就在自己的内存范围内创建一个实例对象名+属性名的副本,调用的时候就是用的这个。

     

     

     

    展开全文
  • python-类属性和实例属性

    千次阅读 2019-01-15 21:46:06
    目录 一.概念 1.实例属性: ...2.用对象实例对象改变属性值 3.使用实例对象修改可变数据类型的元素值​ 4.使用实例对象给属性赋值​ 一.概念 1.实例属性: 在实例对象中定义的属性 2....

    目录

    一.概念

    1.实例属性:

    2.类属性(静态属性):

    (1)类属性的使用方式

    二.注意事项

    (1).对于不可变数据类型

    (2).对于可变数据类型

    三.实例

    1.定义一个不可变数据类型变量,然后调用

    2.用类对象和实例对象改变类属性值

    3.使用实例对象修改可变数据类型的元素值

    4.使用实例对象给类属性赋值


    一.概念

    1.实例属性:

    在实例对象中定义的属性

    2.类属性(静态属性):

    在类对象(也就是类)中定义的属性,并且多个实例对象之间共享一份类属性。

    (1)类属性的使用方式

    类名.类属性

    也可以使用 对象名.类属性

     

    二.注意事项

    (1).对于不可变数据类型

    对象名.静态属性名称=值 是给对象中添加属性名称,而不是进行修改。

    (2).对于可变数据类型

        如果对象是修改可变数据类型变量中的数据,都有影响。

        如果是从新给可变数据类型变量赋值,这是给该对象添加属性。

    三.实例

    1.定义一个不可变数据类型变量,然后调用

    结果是:

    2.用类对象和实例对象改变类属性值

    class aa:
        a = '1'
        def __init__(self,name,age):
            self.name = name
            self.age = age
        def __str__(self):
            return '姓名是:{},年龄是{}'.format(self.name,self.age)
    b = aa('老王',20)
    print(b.a)

    得到的结果:

    3.使用实例对象修改可变数据类型的元素值

    class aa:
        a = []
        def __init__(self,name,age):
            self.name = name
            self.age = age
        def add__name(self,name):
            if len(name) < 3:
                self.a.append(name)
        def __str__(self):
            return '姓名是:{},年龄是{}'.format(self.name,self.age)
    b = aa('老王',20)
    b.add__name('小王')
    b.add__name('小方')
    print(aa.a)
    print(b)
    

    结果显示如下:

    4.使用实例对象给类属性赋值

     

     

    结果显示如下:

    展开全文
  • Python类属性和实例属性的定义

    千次阅读 2018-10-11 19:23:07
    属性,在方法外定义的属性。...实例属性,__init__内定义的属性。 属性可以直接用类名访问,具有读写权限,也可以用实例名访问,但用实例访问时只能读。当实例访问不存在的属性时,会在实例中新建属性。 ...

    类属性,在类方法外定义的属性。

    实例属性,__init__内定义的属性。

    类属性可以直接用类名访问,具有读写权限,也可以用实例名访问,但用实例访问时只能读。当实例访问类不存在的属性时,会在实例中新建属性。

    展开全文
  • python类属性和实例属性的区别

    千次阅读 2018-01-25 09:16:08
    一、属性 (1)属性的创建class Anamal(Object): class attr = 'class_attr' #属性(2)属性的访问 a、类名.属性名Anamal.attr='new_name'b、实例名....(1)实例属性的创建,通常在init
  • python类属性和实例属性的使用和区别

    千次阅读 多人点赞 2019-06-16 18:24:47
    # 类属性和实例属性 class Student: count = 10 # count是属性 def __init__(self, name): self.name = name # name是实例属性 print(Student.count) ...
  • 目录类属性属性的定义操作类属性的三种方法属性存在的意义操作类属性的方法使用@property装饰器操作类属性通过@property装饰器对属性的取值赋值加以控制使用python内置函数操作属性类属性 属性的定义 python中...
  • python中的属性、实例属性方法、实例方法

    万次阅读 多人点赞 2018-07-03 10:45:22
    定义 class Person(): pass 创建实例 xiaoming = Person() ...实例属性 xiaoming = Person() xiaoming.name = xiaoming xiaoming.age = 24 xiaoming.sex = man xiaohong = Person() xiaohong.n...
  • 变量名定义的变量称之为实例属性或者实例变量 在中且在函数体内部以变量名=变量值的形式定义的变量称之为局部变量 二 属性 class Person: name = '小张', age = 24 属性的特点是所有实例化的对象都共享...
  • python3中的重点与难点:类属性和实例属性的区别

    万次阅读 多人点赞 2018-03-20 23:22:06
    类属性就是对象(Tool)所拥有的属性,它被所有对象的实例对象(实例方法)所共有,在内存中只存在一个副本,这个C++中的静态成员变量有点类似。对于公有的类属性,在外可以通过对象和实例对象访问 ...
  • python中的类属性和实例属性

    千次阅读 2019-02-04 12:36:21
    一个类实例化后,实例是一个对象,有属性。同样,也是一个对象,它也有属性。定义一个类属性,如下: class A: x = 7 定义一个很简单的中有一个变量x=7,在A中,变量x所引用的数据,能够直接通过来...
  • 思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言,以及根据创建的实例可以任意绑定属性以及方法,下面分别介绍。...
  • 复制代码 代码如下: #!/usr/bin/env python class Foo(object): ... 您可能感兴趣的文章:python魔法方法-属性访问控制详解python魔法方法-属性转换和类的表示详解Python类中的魔法方法之 __slots__原理解析Python中如何
  • 本文实例讲述了Python 的魔法属性用法。分享给大家供大家参考,具体如下: 魔法属性 无论人或事物往往都有不按套路出牌的情况,Python类属性也是如此,存在着一些具有特殊含义的属性,详情如下: 1. doc 表示...
  • Python学习笔记——类属性和实例属性

    万次阅读 多人点赞 2017-06-09 00:13:46
    Python学习笔记——类属性和实例属性的区别访问特性首先我们以Test为例:class Test(object): #属性 a = 100 def __init__(self, b): #实例属性 self.b = b t = Test(100)#通过实例化对象访问 属性print...
  • 什么是python类属性

    2020-12-17 14:54:42
    2.使用实例直接操作类属性(例如:obj.name,obj.age=18,del obj.age) 3.使用python内置函数操作属性属性存在的意义: 1、访问属性时可以制造出访问字段完全相同的假象,属性由方法衍生而来,如果Python...
  • 主要介绍了Python类和实例属性机制原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本文实例分析了python的私有属性和方法。分享给大家供大家参考。具体实现方法如下: python默认的成员函数和成员变量都是公开的,并且没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只...
  • 1.变量 下面介绍变量的两种定义方式、两种读取方式、在里面的调用方式 定义 1.里定义的,与构造函数、普通函数是一个级别缩进的。(下面例子里的num) ...2.先实例实例化对象的属性 获...
  • Python-属性,实例属性方法,静态方法,实例方法 类属性和实例属性 #coding:utf-8 class Student(object): name = 'I am a class variable' #变量 >>> s = Student() # 创建实例s >>> print(s.name) # ...
  • 本文实例讲述了Python 的私有属性和私有方法。分享给大家供大家参考,具体如下: xx:公有变量 _xx:公有变量或方法,不能通过import导入其他模块(只有模块内部使用)。对象和子类可以访问 __xx:私有变量或方法(伪...
  • Python类属性,实例属性

    千次阅读 2016-11-06 20:46:33
    1.Python类数据属性:定义在里面但在函数外面的变量,它们都是静态的。 #一段很简单的代码,但反应了很多 >>> class A(): a=1 #一个里面有个属性a >>> a=A() >>> b=A() >>> a.a >>> b.a >>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 192,614
精华内容 77,045
关键字:

python类属性和实例属性

python 订阅