您的位置:首页 > 编程语言 > Python开发

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)添加属性

列:

单例:

 

 

对象的成员

简单工厂
由工厂生成对象
#简单工厂
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 静态方法
相关文章推荐