python-オブジェクト向け-マルチステート

2928 ワード

マルチステート
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)

クラス属性とインスタンス属性
≪インスタンス・プロパティ|Instance Properties|oem_src≫:特定のインスタンス・オブジェクトと関係があり、1つのインスタンス・オブジェクトと別のインスタンス・オブジェクトは属性クラス属性クラス属性クラス属性が属するクラス・オブジェクトを共有せず、複数のインスタンス・オブジェクト間で1つのクラス属性を共有します.
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メソッドは初期化の2つのメソッドが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