import datetime
import sys
class Test(object):
#类属性
__numinstance = None
time = datetime.date.today()
#类方法
@classmethod
def add_time(cls,time):
cls.time = time
#实例方法
#①对象的初始化
def __init__(self,age=0,name='小明',gender='男'):#self指向实例化对象
#实例属性
self.age = age
#私有属性
self._name = name
self.__gender = gender
#②返回对象的描述
def __str__(self):
return ('我的名字是%s,性别%s,年龄%s'%(self._name,self.__gender,self.age))
#③删除实例化对象时调用(一般不要重写)
def __del__(self):
print('---__del__---')
def set_data(self,name,age,gender,password):
self.password = password
if self.password == '123':
self.__set_data(name,age,gender)
else:
print('密码错误!')
#私有方法
def __set_data(self,name,age,gender):
self._name = name
self.age = age
self.__gender = gender
#静态方法
@staticmethod
def print_message():
print("类与对象")
#单例模式(只产生一个对象)
def __new__(cls):#此时cls是Test指向的那个类对象
if cls.__numinstance == None:
cls.__numinstance = object.__new__(cls)
return cls.__numinstance
else:
return cls.__numinstance
test1 = Test()#对象的实例化
Test.print_message()#test1.print_message()也可以
print(Test.time)#print(test1.time)也可以
Test.add_time('2018.4.23')#test1.add_time('2018.4.23')也可以
print(Test.time)#print(test1.time)也可以
test1.time = '0'#但是如果直接使用test1对象对Time类属性进行修改赋值
print(Test.time)#可以发现并不能直接通过实例化对象对类属性进行修改赋值
print(test1)#调用__str__函数
print(sys.getrefcount(test1))#查看实例化对象引用个数
test1.set_data('索隆',27,'男','123')#调用实例方法
print(test1)#调用__str__函数
运行结果: