1、用来创建实例化对象,只有继承了object,才能有这个方法。
2、一个类有且只有一个实例,并提供了一个全局的访问点。
日志插入、网站的计数器、权限的认证模式、windows资源管理器、系统的回收站、数据库连接值。
3、不能去继承。
4、发生错误。
5、就是进行错误提示,不能继续运行下面的程序。(根据异常的类型去处理)
6、try:
可能发生错误的代码段
exception:
进行捕获提示。
else:
没有错误运行。
finally:
有没有错误都要运行。
7、就是只有在slots里面的属性,才可以动态的进行添加,其他的属性不能进行动态的添加、节省了内存空间。
8、保护属性,不能随意的进行更改。
9、不能
10、私有化属性和私有化方法。
#1 question
class Person():
def __init__(self,name,age):
self.__name=name
self.__age=age
pass
def __str__(self):
return '{}今年{}岁了'.format(self.__name, self.__age)
def get_info(self):
return self.__age
def get_info1(self):
return self.__name
def set_info(self,age):
if age>0 and age<120:
self.__age=age
else:
print("年龄设置不能成功")
def set_info2(self,name):
self.__name=name
#2 question
class DataBase(object):
def __new__(cls,*args,**kwargs):
if not hasattr(cls, '_instance'):
cls._instance=super().__new__(cls,*args,**kwargs)
return cls._instance
pass
db1=DataBase()
print(id(db1))
db2=DataBase()
print(id(db2))
db3=DataBase()
print(id(db3))
#3 question
class Student(object):
def __init__(self):
self.__name='王'
self.__age=12
def get_name(self):
return '{}的年龄是{}'.format(self.__name,self.__age)
def set_name(self,name,age):
self.__name=name
self.__age=age
name1=property(get_name,set_name)
pass
p=Student()
print(p.get_name())
p.set_name("值",13)
print(p.name1)
#4 question
import types
def run(self):
print("我跑得超级快!")
@classmethod
def info(cls):
print('ok')
class Animal():
def __init(self,name,age):
self.name=name
self.age=age
pass
pass
Animal.colour='白色'
Animal.info1=info
cat=Animal()
print(cat.colour)
Animal.info1()
cat.run1=types.MethodType(run, cat)
#执行动态的方法。
cat.run1()