class Dog(object):
#n = "Sooele"
name = "Sooele Cooi"
def __init__(self,name):
self.name = name
self.__food = None
# @staticmethod #实际上跟类没什么关系了
# @classmethod #类方法
@property #属性 attrribue 也是属性的意思 #把一个方法变属性
def eat(self):
print("%s is eating %s" %(self.name,self.__food))
@eat.setter #修改这个属性
def Eat(self,food):
print("set to food:",food)
self.__food = food
@eat.deleter #删除这个属性
def eat(self):
del self.__food
print("del over ........")
def talk(self):
print("%s is taliing" % self.name)
def __call__(self, *args, **kwargs): #__call__
print("running....",args,kwargs)
def __str__(self): ###__str__
return "<obj:%s>" %self.name
############################################################
##构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()
#d = Dog("Sooele")(1,2,3) #__call__
# d(1,2,3,name=333) #__call__
##############################################################
######################################################
# print(Dog.__dict__) #__dict__ 查看类或对象中的所有成员,#打印类里的所有属性
# d = Dog("Sooele") ###打印所有实例属性,不包括类属性
# print(d.__dict__)
######################################################
#################################
d = Dog("Sooele") ###__str__
print(d)
#################################
相关