1.类的实例化: 调用类的过程称之为类的实例化,产生的对象也可以称之为类的一个实例
'''
调用类产生对象发生的事情:
1.会产生一个空对象的名称空间
2.会自动触发__init__,并且会将对象当做第一个参数传入。
3.会将调用类括号内的参数一并传给__init__().
4.self代表实例本身
5. 补充: 如果类中没有定义构造,在实例化的时候会默认创建一个空的构造函数
'''
class People:
country = 'China'
def __init__(self,name,sex):
print(self.__dict__)
print(self)
self.name = name
self.sex = sex
# self.fun = self.func() @@@@@@@@@@
def func(self):
print(f'你的名字是:{self.name},性别是:{self.sex}')
# p1 = People('kimi','male')
# p1.func()
print(People.country)
class method:
def fun():
print('122343333333333')
method.fun()
2. 查看类和实例的名称空间:
# print(People.__dict__)
# print(p1.__dict__)
3. 通过实例和类对类属性进行操作,类无法修改实例属性(都无法调用何来修改)
# #类或对象的属性操作: 查增改删
# #查
# print(People.country)
# 增
People.num = 500
print(People.num)
# #改
# People.country = '中国'
# print(People.country)
# People.name = '呵呵'
# print(p1.name)
# #删
# print('#'*20)
# # del People.country
# # print(People.country)
#
# print(p1.name)
# p1.sal = 150000000
# print(p1.sal)
# p1.age = 16
# print(p1.age)
# del p1.sal
# print(p1.sal)
4. 类中数据属性(类中的变量): 类中属性是给对象使用的,对象引用类中的属性,指向的都是类中同一个内存地址。
# p_obj1 = People('tank', 'male')
# p_obj2 = People('jason','female')
# p_obj3 = People('大饼','female')
# print(p_obj1.country, id(p_obj1.country))
# print(p_obj2.country, id(p_obj2.country))
# print(p_obj3.country, id(p_obj3.country))
5.类中的方法: 类中的方法是给对象使用的,self 即代表函数本身,self.func= self.func()
由不同的对象来调用就会将方法绑定给不同的对象, 并且会将对象当做第一个参数传入
# print(People.learn)
# print(p_obj1.learn) # bound method
# print(p_obj2.learn)
# print(p_obj3.learn)
6.对象属性的查找顺序: 先从对象自己名称空间中查找 ---》 类的名称空间中查找