首页 > 其他 > 详细

03-类属性和实例属性

时间:2021-01-26 12:42:15      阅读:23      评论:0      收藏:0      [点我收藏+]

类属性和实例属性

1 类属性

1.1 设置和访问类属性

  • 类属性就是 类对象 所拥有的属性,它被 该类的所有实例对象 所共有
  • 类属性可以使用 类对象实例对象 访问。
class Dog(object):
    tooth = 10


wangcai = Dog()
xiaohei = Dog()

print(Dog.tooth)  # 10
print(wangcai.tooth)  # 10
print(xiaohei.tooth)  # 10

类属性的优点

  • 记录的某项数据 始终保持一致时,则定义类属性。
  • 实例属性 要求 每个对象 为其 单独开辟一份内存空间 来记录数据,而 类属性 为全类所共有 ,仅占用一份内存更加节省内存空间

31.2 修改类属性

类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了一个实例属性。

class Dog(object):
    tooth = 10


wangcai = Dog()
xiaohei = Dog()

# 修改类属性
Dog.tooth = 12
print(Dog.tooth)  # 12
print(wangcai.tooth)  # 12
print(xiaohei.tooth)  # 12

# 不能通过对象修改属性,如果这样操作,实则是创建了一个实例属性
wangcai.tooth = 20
print(Dog.tooth)  # 12
print(wangcai.tooth)  # 20
print(xiaohei.tooth)  # 12

2 实例属性

class Dog(object):
    def __init__(self):
        self.age = 5

    def info_print(self):
        print(self.age)


wangcai1 = Dog(18)
xiaohei1 = Dog(99)
# 实例属性
print(wangcai1.age)
# print(Dog.age)  # 报错:实例属性不能通过类访问
wangcai1.info_print()  # 5

# 2.1 类中定义的函数是类的函数属性,类可以使用,但必须遵循函数的参数规则,有几个参数需要传几个参数
Dog.info_print(wangcai1)
Dog.info_print(xiaohei1)

# 2.2 类中定义的函数主要是给对象使用的,而且是绑定给对象的,虽然所有对象指向的都是相同的功能,但是绑定到不同的对象就是不同的绑定方法,内存地址各不相同
print(id(Dog.info_print))  # 2118372007224
print(id(wangcai1.info_print))  # 2118368383176
print(id(xiaohei1.info_print))  # 2118368383176

# 2.3绑定到对象的方法特殊之处在于,绑定给谁就因该有谁来调用,谁来调用,就会将”谁“本身当作第一个参数自动传入(方法__init__也是一样)
wangcai1.info_print()  # Dog.info_print(wangcai1)
xiaohei1.info_print()  # Dog.info_print(xiaohei1)

# 类型list就是一个类
print(type(list))  # <class ‘type‘>

# 实例化得到3个对象l1,l2,l3
l1=list([1,2,3])
l2=list([‘a‘,‘b‘,‘c‘])
l3=list([‘x‘,‘y‘])
# 三个对象都有绑定方法append,是相同的功能,但内存地址不同

# 操作绑定方法l1.append(4),就是再往l1添加4,绝对不会将4添加到l2或l3
print(l1.append(4))  # 等同于list.append(l1,4)
print(l1)  # [1, 2, 3, 4]
print(l2)  # [‘a‘, ‘b‘, ‘c‘]
print(l3)  # [‘x‘, ‘y‘]

03-类属性和实例属性

原文:https://www.cnblogs.com/LYPZX/p/14329417.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!