Python学习第12天_类

1、类的创建

语法:

class 类名():
#类的属性
	name = '喵酱'
	#类的方法
	def joke(self):
		print('创建类成功')

2、类的实例化

语法:实例名 = 类名()

列如:

my_captain = Captain()

意义:创建一个实例,它可以调用所属类的所有属性和方法 知识点:

  • 类和实例的关系类似于「群体和个体」
  • 群体里的每个个体都有着相同相似的特 征和行为

3、self参数

  • 在定义实例方法时,第一个参数必须是self参数,实例在调用方法时,不需要传递参数
  • 在实例方法中需要调用类属性或其他实例方法时,必须采用self.属性名self.方法名这两种方式

4、__init__方法

  • __init__方法会在类的实例化的时候,自动的调用,因此__init__方法也被称为初始化方法

类的使用

1、继承语法:classA(B)

其中A代表子类,B代表父类 对于子类来讲,它能够继承父类所拥有的属性和方法

2、类的多重继承

在Python当中,定义一个类的时候可以同时继承多个父类,这种方式被称为多重继承

例如:

# 垃圾类
class Waste():
    w_name = '垃圾'

    # ‘垃圾’类的一个方法:回收垃圾
    def recycle_w(self):
        print('回收垃圾...')


# ‘有害垃圾’类
class HazardousWaste(Waste):  # 括号中填写父类的变量名
    hw_name = '有害垃圾'

    # ‘有害垃圾’类的一个方法:回收有害垃圾
    def recycle_hw(self):
        print('回收有害垃圾...')


# 创建‘有害垃圾’类的实例hw
hw = HazardousWaste()
print('子类的实例hw与父类的是否存在关联:')
print(isinstance(hw, Waste))
print('子类的实例hw与‘object’类的是否存在关联:')
print(isinstance(hw, object))
print('结论:子类默认继承‘object’类,与其存在关联!')

运行代码后可以看到: HazardousWaste(Waste)虽然只写了一个父类Waste,却与object存在关联关系 这也印证了Python中所有的类都默认继承于object。换句话说,object是所有类的'父类'

3、类的重写

什么是类的方法重写呢?当我们在定义类的方法时,方法的名字和父类的一样,修改了其内容,就是类的方法重写

动物中偶尔会出现变异的情况:假如有不会爬树的猫。就可以重新分类为'变异猫'类

这里定义一个'猫'类和'变异猫'类,并修改了‘变异猫’类的爬树方法

# ‘猫’类
class Cat():
    name = '猫'
    # 爬树方法
    def climb_tree(self):
        print('可以爬树!')

# ‘变异猫’类
class VariationCat(Cat):
    v_name = '变异猫'
    # 爬树方法
    def climb_tree(self):
        print('不可以爬树!')

print('‘变异猫’的实例:')
# ‘变异猫’类的实例vc
vc = VariationCat()
# 调用爬树方法
print('变异猫的爬树方法:')
vc.climb_tree()
# 调用父类name属性
print('变异猫父类的name属性:')
print(vc.name)
print('变异猫自己的v_name属性:')
print(vc.v_name)
print('变异猫,同样是‘猫’,但是‘不可以爬树!’')
print('-------------------------------------------')
print('‘猫’的实例:')
# ‘猫’类的实例c
c = Cat()
# 调用爬树方法
print('猫的爬树方法:')
c.climb_tree()
# 调用name属性
print('猫的name属性:')
print(vc.name)
print('虽然子类‘变异猫’修改了climb_tree()方法,但是父类完全不受影响,依然‘可以爬树!’')

可以看到,子类‘变异猫’类修改了‘爬树’方法,对‘猫’类完全不影响。这就造就了‘变异猫’类不会爬树的结果,但是‘猫’类依然可以爬树

类的重写总结:

  • 在子类中编写与父类名称一样的函数或变量就是类的重写

  • 类的方法在子类中重写之后就不可以再调用父类的该方法了

原文地址:https://www.cnblogs.com/jianwen520/p/13131619.html