面向对象 --类

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.对象属性的查找顺序: 先从对象自己名称空间中查找 ---》 类的名称空间中查找

原文地址:https://www.cnblogs.com/bigbox/p/11929912.html