Python 多态 类属性 静态方法 简单工厂
2017-12-30 14:54
543 查看
Shout就是多态
类属性:属于类的成员,属于对象共有的
类方法:在方法上添加@classmethod
@classmethod
Def cmethod(class): class是一个名字可以随意写
Print:(“这是一个类方法……”)
Test.cmethod()
可以通过类方法调用类的属性
@classmethod
Def cmethod(class): class是一个名字可以随意写
Cls.uname=(hello)
Print:(“这是一个类方法……”)
Test.cmethod()
静态方法:方法前加@staticmethod,静态方法没有参数,静态方法即可和类没有关系,也和对象没有关系,也可以通过类和对象调用。
静态方法都不需要参数,静态方法比类级别高。
@classmethod
Def smethood():
Print(“这是一个静态方法…….”)
工厂类:有一些子类,在一个类中生成很多对象简单工厂模式。
Pass
__new_(cls): #用来创建对象而且必须有返回值
Return object_new_(cls)
/可以用print
(ID(class))看地址
当有属性时def _new_(sself.name)添加属性
列:
单例:
对象的成员
简单工厂
由工厂生成对象
类属性:属于类的成员,属于对象共有的
类方法:在方法上添加@classmethod
@classmethod
Def cmethod(class): class是一个名字可以随意写
Print:(“这是一个类方法……”)
Test.cmethod()
可以通过类方法调用类的属性
@classmethod
Def cmethod(class): class是一个名字可以随意写
Cls.uname=(hello)
Print:(“这是一个类方法……”)
Test.cmethod()
静态方法:方法前加@staticmethod,静态方法没有参数,静态方法即可和类没有关系,也和对象没有关系,也可以通过类和对象调用。
静态方法都不需要参数,静态方法比类级别高。
@classmethod
Def smethood():
Print(“这是一个静态方法…….”)
工厂类:有一些子类,在一个类中生成很多对象简单工厂模式。
Pass
__new_(cls): #用来创建对象而且必须有返回值
Return object_new_(cls)
/可以用print
(ID(class))看地址
当有属性时def _new_(sself.name)添加属性
列:
单例:
对象的成员
简单工厂
由工厂生成对象
#简单工厂 class Hambuger: def show(self): print("这是汉堡...") class chickenHambuger(Hambuger): def show(self): print("这是鸡腿汉堡...") class fishHambuger(Hambuger): def show(self): print("这是麦香鱼汉堡...") class factory: @classmethod def createHambegur(cls,hum): if hum=="chicken": return chickenHambuger() else: return fishHambuger() c=factory.createHambegur("chicken") c.show() #------------------------------------------------------ #私有属性、私有方法均不能在类外二被调用 class test: #属性 __privatcattor=0 #私有属性 def __init__(self,name): self.name=name #方法 def show(self): self.__privatcattor=1 print("这是show方法...%d,姓名: %s"%(self.__privatcattor,self.name)) t=test("张三") t.show() #--------------------------------------------- class pet: def __init__(self,name): self.name=name def shout(self): print("动物在叫.....") class pethospital:#多态 def cure(self,pet): print("{0}在看病....".format(pet.name)) pet.shout() class dog(pet): def shout(self): print("%s汪汪叫....."%self.name) class cat(pet): def shout(self): print("%s喵喵叫......."%self.name) d=dog("泰迪") d.shout() c=cat("tom") c.shout() hospital=pethospital(); hospital.cure(d) #--------------------------------- class test: #类属性 name=None #初始化方法 def __init__(self,name): self.name=name #类方法 def show(self): print(self.name) t=test("abc") t.show() #-------------------------- class test: #类属性 uname="张三" #初始化方法 def __init__(self,name): test.uname=name pass #类方法 def show(self): print(self.uname) t=test("abc") d=test("aaa") print(t.uname) #---------------------------------- #类方法 class test: @classmethod def cmethod(cls): print("这是一个类方法") test.cmethod() #处理类级别的事情,可以通过类方法调用类属性,也可以通过对象调用类属性 #----------------------------------------------------------------------------------------------------- class test: @staticmethod def smethod(): print("这是一个静态方法....") test.smethod() #-------------------------------------------------------------------------------------- #新建对象方法 class test: def __new__(cls,uname): #当有属性是需要在__new__()中添加属性 print(id(cls))#类就一个ID号 print("这是new方法.....") return object.__new__(cls) def __init__(self,uname): self.uname=uname print("初始化方法.....") def __del__(self): print("对象销毁.....") t=test("abc") print(t.uname) #----------------------------------------------------------------------------- #单例 class singleton: __instance=None def __new__(cls, *args, **kwargs): if cls.__instance==None: cls.__instance=object.__new__(cls) return cls.__instance else: return cls.__instance s=singleton() ss=singleton() print(id(s)) print(id(ss)) #----------------------------------------------------------------------------------
相关文章推荐
- python-多态、类属性、类方法、静态方法、异常
- 设计模式学习003——工厂模式(工厂方法、抽象工厂),简单工厂【也叫静态工厂】
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- Python入门简单的静态网页爬虫2.0 (实现各模块的具体方法)
- python直接访问私有属性的简单方法
- python中的静态属性,静态方法、类方法解读
- python面向对象编程(2)—— 实例属性,类属性,类方法,静态方法
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- 普通方法多态,属性,私有方法和静态方法不多态
- python_静态属性,类方法,静态方法
- 这个问题不简单:非静态的字段、方法或属性“System.Web.UI.Page.Request.get”要求对象引用
- java中静态属性和和静态方法的继承问题 以及多态的实质
- Python 类属性、类方法和静态方法
- java继承 父类子类方法调用问题 属性和静态方法是没有多态的
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- Python面向对象,类,继承,多态及鸭子类型,获取类的类型,方法和属性(类似java的反射)
- python面向对象编程(2)—— 实例属性,类属性,类方法,静态方法
- java中静态属性和和静态方法的继承问题 以及多态的实质
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现