python之面向对象思想
python 中可以看见的都是对象
- 1)类:是一种事物的抽象概念,描绘了该类事物共同的特征和行为,对象是类的实例
- 2)对象:是该类事物的具体表现,是存在的,对象包括两个数据成员(类变量和实例变量)和方法
- 3)类属性 :这个类所有的对象都会有这个属性,属性的值是一样的
- 4)对象属性(实例属性):这个类所有的对象都可能有这个属性,每个对象的属性值都有可能不一样
- 5)类方法:第一个参数是cls,需要通过classmethod装饰器来声明一个类方法,cls 代表的是类本身
- 6)对象方法(实例方法):第一个参数是self ,不需要做特殊的声明 ,self 代表的是对象本身
一、类,对象的创建
1. 创建一个类
'''
类名的规范:大驼峰命名法
1.类的定义:
class 类名:
pass
'''
# 创建一个类
class ZoonName:
pass
2. 创建一个对象
# 创建一个类
class ZoonName:
pass
# 通过类创建一个对象
obj = ZoonName()
3. 创建类属性
- 类属性:这个类所有的对象都要这个属性,直接在类里面定义的变量,类的对象又分为公有属性和私有属性
- 对象属性:这个类所有的对象都可能有这个属性,每个对象的属性值都有可能不一样
# 创建类属性,类属性可以通类获取,也可以通过对象获取
class ZoonName:
# 公有变量
sex = '女'
# 私有变量
__age = 3
def cry(self):
# 类的私有属性只能在类里面调用
print(self.__age)
obj = ZoonName()
obj.name = "小狗"
obj.age = 4
# 实例属性只能通过对象来调用
print(obj.name) # 小狗
print(obj.age) # 4
# 对象调用类属性(公有属性)
print(obj.sex) # 女
# 类调用类属性
print(ZoonName.sex) # 女
4. __init__
,self
方法
# 定义一个类
class ZoonName:
# init 初始化方法
def __init__(self, name):
self.name = name
# 对象方法
def features(self):
# self 指的是当前调用这个方法的对象本身
print(self)
print("{}说话".format(self.name))
ob1 = ZoonName("小猫")
ob1.features()
print("ob1对象", ob1)
ob2 = ZoonName("小狗")
ob2.features()
print("obj2对象", ob2)
'''
<__main__.ZoonName object at 0x0000024801964670>
小猫说话
ob1对象 <__main__.ZoonName object at 0x0000024801964670>
<__main__.ZoonName object at 0x0000024802093F10>
小狗说话
obj2对象 <__main__.ZoonName object at 0x0000024802093F10>
'''
5. 类方法和对象方法
- 对象方法(实例方法)的调用:对象.方法名
- 类方法的调用:类.方法名,对象.方法名
class ZoonName:
def __init__(self, name):
self.name = name
# 对象方法 self
def features(self):
print("{}说话".format(self.name))
print("对象方法")
# 类方法 通过装饰器classmethod定义一个类方法
@classmethod
def features02(cls):
print("类方法")
ob1 = ZoonName("小猫")
ob1.features()
ob1.features02()
ZoonName.features02()
'''
小猫说话
对象方法
类方法
类方法
'''
二、继承
1. 继承一个类
在python中object类是所有类的父类
# 创建一个类
class student:
sex = "男"
pass
# 创建一个类继承student
class child(student):
pass
# 创建一个对象实现child类
child01 = child
print(child01.sex) # 男
2. 继承多个类
# 创建一个学生 类
class student:
sex = "男"
# 创建一个人 类
class people:
life = "活的"
# 创建一个类继承student类 和 people 类
class child(student, people):
pass
# 创建一个对象实现child类
child01 = child
print(child01.sex) # 男
print(child01.life) # 活的
3. 继承方法,重写父类的方法
# 创建一个学生 类
class student:
sex = "男"
def go_to_school(self):
print("上学")
# 创建一个人 类
class people:
life = "活的"
def walk(self):
print("走路")
# 创建一个类继承student类 和 people 类
class child(student, people):
# 子类可以重写父类的方法
def go_to_school(self):
print("去上学了")
# 创建一个对象实现child类
child01 = child
print(child01.sex) # 男
print(child01.life) # 活的
child01.walk(child01) # 走路
child01.go_to_school(child01) # 去上学了