1.对象的概念

面向对象的核心是对象二字,而对象的作用就在于高度整合,将不同的属性和功能放在一起,即提高了程序的解耦合能力,也提高了程序的可拓展性

2.类和对象

类即种类,对象即类的对象,类中放着的是对象共有的属性和功能,而对象中放着的是对象自己独有的功能和属性。

3.面向对象编程

3.1 类和对象的实例化

要实例化一个对象则必须要先定义一个类,通常把用类创造对象的过程称为类的实例化过程

class People:
	age = 18	
	def __init__(self,name):
		self.name = name
p = People('json')
print(p.__dict__)
print(p)

注意:
1.每实例化一次类就拿到一个独一无二的对象,即对象的ID不同
2.如果在类中定义函数,则不能有返回值,否者会和对象其冲突

3.2 属性访问方法

3.2.1 通过对象的字典访问

在每一对象之下都有__dict__内置方法,拿到类字典,可以看到类的属性和功能。通过__dict__方法可以对对象属性和功能进行增删改查。

class People:
	age = 18
	def __init__(self,name):
		self.name = name
people = People('json')
# 1.查
people.__dict__['name']
# 2.改
people.__dict__['name'] = 19
# 3.增
people.__dict__['gender'] = '男'
# 4.删
del people.__dict['gender']

3.2.2 通过对象的属性方法访问

在每个类下都有对象.xx属性方法可以直接拿到对象的属性,因此可以直接通过属性方法访问到属性。

class People:
	age = 18
	def __init__(self,name):
		self.name = name
people = People('json')
# 1.查
people.name
# 2.改
people.name = 'egon'
# 3.增
people.gender = '男'
# 4.删
del people.gender

3.2.3 属性查找顺序和访问方法

对象名称中存放着对象特有的属性,而类中存放着公用的。当对象在自己字典中找不到后,则会去类中查找。
1.类中定义的变量是类的属性,是共享给所有对象用的,他们指向的内存地址是一样的

class People:
    say = '1'
    def __init__(self,name):
        self.name = name
    def say1(self):
        pass

p1 = People('alex')
p2 = People('egon')
print(id(p1.say))
print(id(p2.say))
print(id(People.say))

'''
1283383329008
1283383329008
1283383329008
'''

2.类中定义的函数类自己可以调用,但是不会自动传入对象,必须要将对象参数,有几个参数就传入几个参数
但类中的函数其实主要是给对象使用的,是绑定给对象的,当绑定给对象后他的函数地址则于类中的地址不一样,但与其他的绑定方法的内存地址一致

class People:
    say = '1'
    def __init__(self,name):
        self.name = name
    def say1(self):
        pass

p1 = People('alex')
p2 = People('egon')
print(id(p1.say1))
print(id(p2.say1))
print(id(People.say1))

"""
2167601385672
2167601385672
2167633395288
"""

小结:面共对象可以把关联性强的一类高度整合在一起,以提高程序的可拓展性,降低代码的耦合性。