1 '''
2 在Python中,类属性和实例属性是面向对象编程中常用的概念.
3 1. 类属性(Class Attributes):
4 1. 类属性是属于整个类的属性,对所有实例对象共享。
5 2. 类属性可以在类的内部或外部进行定义,通过类名或实例访问。
6 3. 类属性通常用于表示类的共有特征或默认值。
7 4. 类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了⼀个实例属性
8 类属性的优点
9 1. 记录的某项数据 始终保持⼀致时,则定义类属性。
10 2. 实例属性要求每个对象为其单独开辟⼀份内存空间来记录数据,⽽类属性为全类所共有
11 3. 仅占⽤⼀份内存,更加节省内存空间。
12
13 2.实例属性(Instance Attributes):
14 1. 实例属性是属于每个实例对象的属性,不同实例之间可以有不同的实例属性值。
15 2. 实例属性在类的内部通过 self 关键字进行定义,并在实例化后通过实例对象进行访问。
16 3. 实例属性通常用于存储实例的独特状态或特定数据。
17 '''
18
19 # 1. 类属性语法
20 class MyClass:
21 class_attribute = "This is a class attribute"
22
23 # 访问类属性
24 print(MyClass.class_attribute) # This is a class attribute
25
26 # 1. 定义类,定义类属性
27 class Dog(object):
28 tooth = 10
29
30
31 # 2. 创建对象
32 wangcai = Dog()
33 xiaohei = Dog()
34
35 # 3. 访问类属性: 类和对象
36 print(Dog.tooth) # 通过类名.类属性名访问 10
37 print(wangcai.tooth) # 通过实例名.类属性名访问 10
38 print(xiaohei.tooth) # 10
39 # 坑1: 这样就相当于给wangcai实例增加一个实例属性(名字和类属性名同名),因此类属性的修改使用类名.属性名=xxx
40 wangcai.tooth = 1 + wangcai.tooth
41 print(xiaohei.tooth) # 10
42 print(wangcai.tooth) # 11
43
44 Dog.tooth = 30
45 print(xiaohei.tooth) # 30
46 print(wangcai.tooth) # 11
47
48
49 # 2. 实例属性
50 class MyClass:
51 def __init__(self):
52 self.instance_attribute = "This is an instance attribute"
53
54 # 实例化对象并访问实例属性
55 obj = MyClass()
56 print(obj.instance_attribute) # This is an instance attribute