类:使用 class 关键字定义的。如 :class Student
类对象:利用 class 声明出来的类,如 Student 就是类对象。
实例对象:根据类对象创建出来的对象叫类的实例。例如:stu = Student(),其中 stu 就是实例对象。
类属性:定义在类里面、方法外面的属性叫做类属性。通常用来记录与这个类相关的特征。
实例属性:对象的属性叫做实例属性。定义在 __init__() 方法中(self.属性名),用来记录对象的特征。
实例化:创建对象这个动作称为类的实例化。
对象调用的方法叫做实例方法。
代码演示:
class Student: # Student是类对象
# 类属性:stu_count、stu_info
stu_count = 0 # 用来记录一共有多少个学生
stu_info = {} # 用来存储学生信息
def __init__(self, name, age):
# 实例属性:name、age
self.name = name
self.age = age
# 对类属性的计数加1
Student.stu_count += 1
Student.stu_info[name] = age
# stu1/stu2/stu3/stu4/stu5 是实例对象
stu1 = Student('张三', 15)
stu2 = Student('李四', 13)
stu3 = Student('王五', 14)
stu4 = Student('麻六', 16)
stu5 = Student('陆七', 15)
# 输出学生总人数
print(Student.stu_count) # 5
print(Student.stu_info) # {'张三': 15, '李四': 13, '王五': 14, '麻六': 16, '陆七': 15}
输出结果:
5
{‘张三’: 15, ‘李四’: 13, ‘王五’: 14, ‘麻六’: 16, ‘陆七’: 15}
实例对象
一个类可以创建多个实例对象,每个对象都各自拥有自己的实例属性,通过 self. 来访问自己的属性和调用自己的方法。
![图片[1]-Python类对象、实例对象、类属性和实例属性等-尤尤'blog](https://pic.yxfseo.cn/wp-content/uploads/2022/11/c8974cb10b172126.jpg?imageView2/0/interlace/1/q/75|imageslim)
实例属性
对象的属性叫做实例属性。定义在 __init__() 方法中(self.属性名),用来记录对象的特征。
1)获取对象属性
a、在类外面获取对象的属性:对象名.属性名
b、在类里面获取对象的属性:self.属性名
class Student:
def __init__(self, name, age, iphone):
self.name = name
self.age = age
self.iphone = iphone
def display(self):
# 类里面获取对象属性:self.属性名
print(f'我的名字叫{self.name},今年{self.age}岁,我的电话是{self.iphone}')
stu = Student('张三',21,'13672829899')
stu1 = Student('李四',19,'12345617899')
# 类外面获取属性:对象名.属性名
print(stu.name)
stu.display()
输出结果:
张三
我的名字叫张三,今年21岁,我的电话是13672829899
2)添加对象属性(实例属性)
1)类里面添加属性
在 __init__() 方法中,使用 self.属性名 = 值 来添加属性。推荐使用这个方法。
class Student:
def __init__(self, name, age, iphone):
self.name = name
self.age = age
self.iphone = iphone
stu = Student('张三',21,'13672829899')
stu1 = Student('李四',19,'12345617899')
如果我们不知道该给某一个属性设置什么初始值,可以设置为 None(表示什么都没有)。
None 表示一个空对象,没有方法和属性,是一个特殊的常量。
2)动态绑定属性和方法(在类的外面)
如果不想修改类,但是需要临时给某个对象添加属性,可以在类外面通过 “.” 给对象临时添加属性:对象名.属性名 = 值
class Student:
def __init__(self, name, age, iphone):
self.name = name
self.age = age
self.iphone = iphone
def display(self):
print(f'我的名字叫{self.name},今年{self.age}岁,我的电话是{self.iphone}')
stu = Student('张三',21,'13672829899')
stu1 = Student('李四',19,'12345617899')
# 给stu对象临时添加属性gender
stu.gender = '男'
print(stu.gender) # 男
print('------动态绑定方法------')
def eat():
print('我在吃饭')
stu.eat = eat # 动态绑定方法,这就相当于把一个函数名赋值给一个变量,调用这个变量和调用函数名的功能是一样的
stu.eat()
在类外面临时添加的属性只对添加了这个属性的对象有效,没有添加这个属性的对象,不可以使用这个属性。且添加属性的代码必须在使用这个属性的前面,否则程序报错。
class Student:
def __init__(self, name, age, iphone):
self.name = name
self.age = age
self.iphone = iphone
def display(self):
print(f'我的名字叫{self.name},今年{self.age}岁,我的电话是{self.iphone}')
stu = Student('张三',21,'13672829899')
stu1 = Student('李四',19,'12345617899')
# 给stu对象临时添加属性gender
stu.gender = '男'
print(stu.gender)
# 并没有给stu1添加gender属性,所以报错
print(stu1.gender) # AttributeError: 'Student' object has no attribute 'gender'
![图片[2]-Python类对象、实例对象、类属性和实例属性等-尤尤'blog](https://pic.yxfseo.cn/wp-content/uploads/2022/12/4a04a01be3204204.png?imageView2/0/interlace/1/q/75|imageslim)
注意:在类外面临时添加属性的方法虽然简单,但是不推荐使用,因为在运行的时候,如果找不到属性,就会报错。所以对象的属性应该封装在类中。
类属性
在类里面直接定义的变量。它被该类的所有对象共享。
1)访问类属性
类名.属性名 。例如 People.birth_place
对象名.属性名 。例如 people.birth_place,这种方法不推荐。容易产生混淆。
Python 中获取属性存在一个
![图片[3]-Python类对象、实例对象、类属性和实例属性等-尤尤'blog](https://pic.yxfseo.cn/wp-content/uploads/2022/11/7cf666c643175759.jpg?imageView2/0/interlace/1/q/75|imageslim)
2)修改类属性
通过
如果使用 对象名.类属性 = 值,只会给对应对象临时添加一个实例属性,而不会影响到类属性的值。
class People:
# 类属性:定义在类里面,方法之外的变量
birth_place = '四川'
def display(self): # self是对类当前实例的引用,用于访问类属性
print(f'我来自{self.birth_place}')
p1 = People()
p2 = People()
print(p1.birth_place) # 访问类属性:对象名.类属性 不推荐使用
print(People.birth_place) # 访问类属性:类名.类属性
# p1.display()
# 针对people这个实例对象添加了一个新的属性,并不会影响类属性的值:对象名.类属性 = 值
p1.birth_place = '吉林' # python解释器会先在p1对象中查找是否有birth_place这个属性,如果没有,就在对象中直接添加这个属性。
# 只是对p1这个实例对象增加了一个属性,People类的类属性值并没有变
print(p1.birth_place) # 吉林
print(p2.birth_place) # 四川
print(People.birth_place) # 四川
# 修改类属性birth_place:类名.类属性 = 值
People.birth_place = '吉林'
# 类属性被该类的所有对象共享,一经修改,所有对象访问到的值也跟着变
print(p1.birth_place) # 吉林
print(p2.birth_place) # 吉林
print(People.birth_place) # 吉林
![图片[4]-Python类对象、实例对象、类属性和实例属性等-尤尤'blog](https://pic.yxfseo.cn/wp-content/uploads/2022/11/e28245a8e2183642.jpg?imageView2/0/interlace/1/q/75|imageslim)
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
暂无评论内容