类和对象
类专业解释为: 类指的是一类具有相同属性和方法的事物的集合。
对象的专业解释为: 类的实例化为对象
所以, 需要先定义类, 再通过实例化类得到对象
Python操作类和对象
在Python中一切皆是对象
类的定义
class Student(object): stu_school = 'hnie' count = 0 def __init__(self, name, age, gender): Student.count += 1 self.name = name self.age = age self.gender = gender def tell_stu_info(self): print('学生信息: 名字: %s 年龄: %s 性别: %s' % ( self.name, self.age, self.gender )) def set_info(self, name, age, gender): self.name = name self.age = age self.gender = gender
类是对象相似数据与功能的集合体, 所以类中最常见的是属性与函数的定义, 但是类体中其实是可以包含任意其他代码的。
在Python中, 类体代码在类的定义阶段就会立即执行, 即会产生类的名称空间
class Student(object): print('====>') # 运行这段代码的时候, 就会输出"====>",
使用内置方法__dict__访问类中的属性和方法
print(Student.__dict__) print(Student.__dict__['stu_school']) # hnie print(Student.__dict__['set_info']) # <function Student.set_info at 0x7ffc8eebf8c0>
再调用类产生对象
stu1_obj = Student() stu2_obj = Student() stu3_obj = Student()
但是, 这时候调用类参数的对象为三个空对象, 即没有任何的属性和方法
print(stu1_obj.__dict__) # {} print(stu2_obj.__dict__) # {} print(stu3_obj.__dict__) # {}
可以通过__dict__给对象添加属性
stu1_obj.__dict__['stu_name'] = 'featherwit' stu1_obj.__dict__['stu_age'] = 18 stu1_obj.__dict__['stu_gender'] = 'male' print(stu1_obj.__dict__)
很显然, 这种赋值方式是很复杂的, Python语言是动态的语言, 所以可以通过动态的方式给对象赋值, 这正是Python语言的魅力所在
stu1_obj.stu_name = 'featherwit' # stu1_obj.__dict__['stu_name'] = 'featherwit' stu1_obj.stu_age = 18 # stu1_obj.__dict__['stu_age'] = 18 stu1_obj.stu_gender = 'male' # stu1_obj.__dict__['stu_gender'] = 'male' print(stu1_obj.__dict__)