----------------------------------------------------------------------------
class Cat: ----定义猫类
def __init__(self,cat_name):
self.name = cat_name
def eat(self): ----定义猫的属性
print("%s爱吃鱼" % self.name)
def sleep(self):
print("爱睡觉")
def catch(self):
print("爱抓老鼠")
Tom = Cat("Tom") ----创建汤姆猫对象
Tom.eat ----汤姆猫的属性
Tom.catch
print(Tom) ----输出汤姆的内存地址
Lazy_cat = Cat("大懒猫")
Lazy_cat.eat
Lazy_cat.sleep
print(Lazy_cat)
----------------------------------------------------------------------------
class Girl:
def __init__(self,name,age)
self.name = name
self.__age = age ----__两个下划线定义私有私有属性,对象外部不能访问
def how_olda(self)
print("%s现在%d岁" % (self.name,self.__age))
def __how_oldb(self)
print("%s现在%d岁" % (self.name,self.__age))
xiaofang = Girl("小芳",18)
print(xiaofang.__age) ----输出错误,私有属性不能访问
print(xiaofang._Girl__age) ----输出正确,可以利用对象._类名__属性来访问私有属性
xiaofang.how_olda ----输出小芳现在18岁
xiaofang._Girl__how_oldb ----输出正确,可以利用对象._类名__方法来调用私有方法
----------------------------------------------------------------------------
class 类名(父类名1,父类名2): ----python中的继承
def 方法a(): ----方法a也在父类中,在子类中可以重新定义,新建子类时调用子类的方法
super().方法a ----在子类中延续父类的方法,并拓展
----------------------------------------------------------------------------
print(类名.__mro__) ----python中调用mro查看方法搜索的顺序
----------------------------------------------------------------------------
class Tools:
count = 0 ----定义类属性
def __init__(self,name):
self.name = name
Tools.count += 1
@classmethod ----定义类方法
def show_count(cls)
print("工具对象总数:%d" % cls.count)
knife = Tools("刀")
axe = Tools("斧子")
Tools.show_count
-------------------------------------------------------------------------------
class MusicPlayer:
instance = None
def __new__(cls,*args,**kwargs): ----单例设计模式重写new方法
print("这是音乐播放器a")
if cls.instance is None:
cls.instance is None:
return cls.instance
def __init__(self,name):
self.playname = name
print("%s开始播放" %s self.playname)
yoo = MusicPlayer("yoo")
yoho = MusicPlayer("yoho")
print(yoo)
print(yoho)
-------------------------------------------------------------------------------
单次执行初始化动作
class Once:
init_flag = False ----初始化动作插旗并置0
def __init__(self):
if Once.init_flag: ----设置if语句判断是否执行初始化动作
return ----终止程序
print("yoo")
Once.init_flag = True ----将旗子置1
---------------------------------------------------------------------------------
def demo1:
return int(input("请输入一个数字:"))
def demo2:
return demo1()
try:
print(demo2)
except Exception as a:
print("未知错误:%s" % a)
---------------------------------------------------------------------------------
def set_password():
print("自定义异常")
pwd = input(“请设置密码:”)
if len(pwd) >= 8:
return pwd
ex = Eception("密码长度不够")
raise ex
try:
print(set_password())
except Exception as result:
print(result)
---------------------------------------------------------------------------------
if __name__ == "__main__": ----增加判断语句测试代码
main() ----测试语句
---------------------------------------------------------------------------------
新建python包,在__init__文件里使用from . import 导入在导入包时要调用的模块