Python教程8

Posted jun1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python教程8相关的知识,希望对你有一定的参考价值。

Python教程8

  1.多态

# -*-coding:utf-8-*-
"""
1.封装:根据职责将属性和方法封装到一个抽象的类中
2.继承:实现代码重用,相同的代码不需要重复编写
3.多态:不同的子类对象调用相同的父类方法,产生不同的执行结果
(多态可以增加代码的灵活度,以继承和重写父类方法为前提,是调用方法的技巧
不影响到类的内部设计)

"""


class Dog(object):
    def __init__(self, name):
        self.name = name

    def game(self):
        print("%s 蹦蹦跳跳的玩耍" % self.name)


class XiaoTianDog(Dog):
    def game(self):
        print("%s 飞到天上去玩耍" % self.name)


class Person(object):
    def __init__(self, name):
        self.name = name

    def game_with_dog(self, dog):
        print("%s 和%s 一起玩耍----" % (self.name, dog.name))
        dog.game()


# 创建狗对象
# waicai =Dog("旺财")
waicai = XiaoTianDog("旺财1")
# 创建人对象
xm = Person("小明")
# 调用和人玩的方法
xm.game_with_dog(waicai)

"""
术语:
创建出来的对象叫做类的实列
创建对象的动作叫实例化
对象的属性叫做实例属性
对象的调用方法叫做实例方法
两个说明:
1.每个对象都有自己独立的内存空间,保存各种不同的属性
2.每个对象的方法,在内存中只有一份,
在调用方法时,需要把对象的引用传递到方法的内部
"""

# 类对象
"""
类时一个特殊的对象,程序运行时,类同样会加载到内存。类对象在内存中只有一份,
使用一个类可以创建很多个对象实例,类对象还可以拥有自己的属性和方法。
类属性就是给类对象中定义的属性,通常用来记录这个类的相关特征,类属性不会用于记录剧吐的对象特征
"""


# 实例,定义一个工具类,每件工具都有自己的name,需求,指定使用这个类,创建多少个工具对象
class Tool(object):
    # 使用赋值语句定义类的属性
    count = 0

    def __init__(self, name):
        self.name = name
        Tool.count += 1  # 每次调用初始化方法都加1


tool1 = Tool("斧头")
print(Tool.count)
tool2 = Tool("榔头")
tool3 = Tool("扳手")
print(Tool.count)
print("----属性获取机制----")
print(Tool.count)  # 推荐
print("工具对象的总数: %d" % tool1.count)  # (不推荐)
print("工具对象的总数: %d" % tool3.count)  # (不推荐)
#  注意下三行
tool3.count = 99  # 在对象中找不到count属性,则会自动添加一个。和类属性不一样
print("工具对象的总数: %d" % tool3.count)
print("=====> %d" % Tool.count)

"""
类方法:
类方法需要修饰器@classmethod来标识
类方法的第一个参数是cls
"""


class Tool1(object):
    count1 = 10

    @classmethod  # 创建类方法,方法上方使用@classmethod
    def show_tool_count(cls):
        print("工具对象的数量%d" % cls.count1)

    def __init__(self, name):
        self.name1 = name
        Tool1.count1 += 1


toola = Tool1("斧头")
toola = Tool1("斧头1")
Tool1.show_tool_count()  # 调用类方法

"""
静态方法:
在开发时,如果需要在类中封装一个方法:
1.不需要访问实列属性或者调用实例方法
2.不需要访问类的属性或者调用类的方法
可以把方法封装成一个静态的方法

"""


class Dog1(object):
    @staticmethod  # 定义静态方法,在方法上使用@staticmethod
    def run():  # 注意静态方法没有参数
        print("小狗要跑跑....")


# dog1 = Dog1() #调用静态方法可以不创建对象
Dog1.run()

 

以上是关于Python教程8的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

python 片段8

Python教程8

[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段

VIM 代码片段插件 ultisnips 使用教程

VSCode自定义代码片段8——声明函数