zoukankan      html  css  js  c++  java
  • Python中类属性和self属性的区别

    今天学习目标,理解类属性和实例属性 

    测试代码如下

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*
    
    '2016-11-26class测试用例'
    
    __author__ = 'CivLcf'
    
    
    class Student(object):
       name ='ddd'
    
    
    class StudentNew(object):
         def __init__(self, name):
             self.name = name
    
    s = Student()
    s1 = StudentNew('s1')
    
    if print(hasattr(s, 'name')):
        print('s.name true')
    else:
        print('s.name false')
    
    if hasattr(Student, 'name'):
        print('Student.name true')
    else:
        print('Student.name false')
    
    if print(hasattr(s1, 'name')):
        print('s1.name true')
    else:
        print('s1.name false')
    
    if hasattr(StudentNew, 'name'):
        print('StudentNew.name true')
    else:
        print('StudentNew.name false')
    
    #删除属性
    del s.name
    del s1.name
    
    if print(hasattr(s, 'name')):
        print('s.name true')
    else:
        print('s.name false')
    
    if hasattr(Student, 'name'):
        print('Student.name true')
    else:
        print('Student.name false')
    
    if print(hasattr(s1, 'name')):
        print('s1.name true')
    else:
        print('s1.name false')
    
    if hasattr(StudentNew, 'name'):
        print('StudentNew.name true')
    else:
        print('StudentNew.name false')

    运行结果:

    s.name true
    Student.name true
    s1.name true
    StudentNew.name false
    s.name true
    Student.name true
    s1.name false
    StudentNew.name false
    

     

    由以上测试可以看出   self.name 中的属性是实例属性   

    上面代码会抛一个异常, 在删除s.name属性的时候,由于student中name属性属于类属性,所以无法直接通过删除实例属性来进行删除

    总结:

    实例的属性可以覆盖类属性  

    self.XXX是实例属性

    以后代码中不要出现实例属性与类属性同名的问题,否则会引起结果不对

    mark 2019-11-26

     

  • 相关阅读:
    HDU 2852 KiKi's K-Number (主席树)
    HDU 2089 不要62
    Light oj 1140 How Many Zeroes?
    Bless You Autocorrect!
    HDU 6201 transaction transaction transaction
    HDU1561 The more ,The better (树形背包Dp)
    CodeForces 607B zuma
    POJ 1651 Mulitiplication Puzzle
    CSUOJ 1952 合并石子
    Uva 1599 Ideal path
  • 原文地址:https://www.cnblogs.com/CityLcf/p/11933342.html
Copyright © 2011-2022 走看看