美文网首页
python-面向对象——多态

python-面向对象——多态

作者: Jalynn葸 | 来源:发表于2018-04-20 09:44 被阅读10次
多态

python是一种运行时语言,python即支持面向过程,也支持面向对象

class Dog(object):
    def print_self(self):
        print("汪汪汪汪汪汪")
class xiaotq(Dog):
    def print_self(self):
        print("hahahhahaahha")
def introduce(temp): 
    temp.print_self()
dog1 =  Dog()
dog2 = xiaotq()
introduce(dog1)
introduce(dog2)
类属性和实例属性

实例属性:和具体的某个实例对象有关系,并且一个实例对象和另一个实例对象不共享属性
类属性类属性所属于类对象,并且多个实例对象之间共享一个类属性

class Tool(object):
    #属性
    num = 0
    #方法
    def __init__(self,new_name):
        self.name = new_name
        Tool.num += 1
tool1 = Tool("锤子")
tool2 = Tool("铁锹")
tool3 = Tool("水桶")
print(Tool.num)
结果:3
类方法、实例方法、静态方法

类方法和实例方法必须传参数,静态方法可以没有

class Game(object):
    #属性
    num = 0
    #实例方法
    def __init__(self):
        self.name = "王者荣耀"
        Game.num += 1
    #类方法
    @classmethod
    def add_num(cls):
        cls.num = 100
    #静态方法
    @staticmethod
    def print_menu():
        print("----------------")
        print("王者荣耀")
        print("_________________")

game = Game()
#类方法可以用类的名字调用方法,还可以通过类创建出来的对象去调用这个类方法
game.add_num()
print(Game.num)
Game.print_menu()
game.print_menu()
new方法

new方法是创建,init方法是初始化这两个方法相当于c++里的构造方法。

class Dog(object):
    def __init__(self):
        print("init***********")
    def __del__(self):
        print("del__________")
    def __str__(self):
        print("str&&&&&&&&&&&&&")
    def __new__(cls):
        print("new+++++++++++")
        return object.__new__(cls) #如果没有这一句就只能打印new

xtq = Dog()
运行结果:
new+++++++++++
init***********
del__________
单例模式
class Dog(object):
    pass
a = Dog()
print(id(a))
b = Dog()
print(id(b))
运行结果:
4303201280
4331156144
class Dog(object):
    __instance = None
    def __new__(cls):
        if cls.__instance == None:
            cls.__instance = object.__new__(cls)
            return cls.__instance
        else:
            return cls.__instance
a = Dog()
print(id(a))
b = Dog()
print(id(b))
运行结果:
4331156200
4331156200
class Dog(object):
    __instance = None
    def __new__(cls,name):
        if cls.__instance == None:
            cls.__instance = object.__new__(cls)
            return cls.__instance
        else:
            return cls.__instance
    def __init__(self,name):
        if Dog.__init_flag == False:
            self.name = name
            Dog.__init_flag == True

a = Dog("旺财")
print(a.name)
print(id(a))
b = Dog("啸天犬")
print(id(b))
print(b.name)
运行结果:
旺财
4331156256
4331156256
啸天犬

相关文章

  • python-面向对象——多态

    多态 python是一种运行时语言,python即支持面向过程,也支持面向对象 类属性和实例属性 实例属性:和具体...

  • Java基础day08笔记:多态|多态中成员的特点|多态的应用示

    01-面向对象(多态-概念) 接下来说一下面向对象的第三个特征:多态。 何为多态呢? 其实...

  • 宅男知识大补丸 学多态 认包包

    java零基础入门-面向对象篇(十) 多态 面向对象的三大特征,封装,继承我们讲完了,这次来讲多态。 多态就是指一...

  • OC面向对象—多态

    OC面向对象—多态 OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没...

  • Java学习day-07:面向对象

    一、面向过程和面向对象 1.面向对象与面向过程的区别: 面向对象具有三大特征;封装,继承,多态;面向对象与面向过程...

  • Kotlin入门学习(二)

    新的篇章 面向对象 面向对象-封装 面向对象-继承 面向对象-抽象类和多态 接口 委托和代理 by关键字 委托...

  • 对象和面向对象的介绍

    对象分为 面向对象和基于对象: 面向对象:面向对象定义: 可以创建自定义类型、很好的支持继承和多态。面向对象的语言...

  • C#之面向对象基础篇

    面向对象编程:简称OOP 面试题:什么是面向对象? 答:封装,继承,多态即为面向对象 面相对象的方法: 面向对象的...

  • 面向对象

    面向对象有3大特性:封装、继承、多态1、介绍面向对象编程 面向对象编程(Object Oriented Progr...

  • python 高级 面向对象编程(OOP)

    面向对象有3大特性:封装、继承、多态 1、介绍面向对象编程 面向对象编程(Object Oriented Pro...

网友评论

      本文标题:python-面向对象——多态

      本文链接:https://www.haomeiwen.com/subject/bpbwkftx.html