Python-基础学习笔记(五)
来源:互联网 发布:钢笔日常书法知乎 编辑:程序博客网 时间:2024/06/05 08:30
Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。接下来,记录一些本人自主学习Python的一些笔记:
类的定义
注:定义类有两种方法,为了方便以后的学习,建议使用新式类定义
- 经典类
class Student: def stand(self): print("起立") def sit(self): print("坐下")
- 新式类
# object的作用代表该类继承于object类class Student(object): def stand(self): print("起立") def sit(self): print("坐下")
创建对象
laowang = Student()# 给类添加属性:若该属性存在则为修改laowang.name = "laowang"laowang.addr = "gebi"# 调用对象方法laowang.stand()
对象方法、类方法与静态方法
对象方法:只可以用对象调用,不能用类调用,带有self形参\
类方法:可以用类调用也可以用对象调用,特点方法上面有@classmethod装饰器,并带有cls形参
静态方法:当一个方法与当前类没有关系时,可以定义一个静态方法来实现。静态方法的调用和类方法没什么区别
class Student(object): # 对象方法 def stand(self): print("对象方法") # 类方法 @classmethod def sit(cls): print("类方法") # 静态方法 @staticmethod def squat(): print("静态方法")# 对象方法调用laowang = Student()laowang.stand()# 类方法调用Student.sit()
类属性
在类里面,方法外面定义的属性为类属性,类型属性可以用类直接使用,无需创建对象.作用类似于Java中的静态变量。\
注:类属性可以用对象访问,但不可以用对象直接修改,否则会帮你生成一个同名的对象属性
class Student(object): # 类属性 name = "laowang" def __init__(self): passlaownag = Student()print(laowang.name) # 打印结果:"laowang"Student.name = "laozhang"print(Student.name) # 打印结果:"laozhang"# 用对象直接修改类属性laozhang = Studeng()print(laozhang.name) # 打印结果:"laowang"laozhang.name = "laozhang"print(Student.name) # 打印结果:"laowang"print(laozhang.name) # 打印结果:"laozhang"
类的初始化方法(init):创建对象后,会自动调用init方法(类似于Java中的构造方法)
- 无参数类型
class Student(object): def __init__(self): self.name = "laowang" self.addr = "gebi"# 创建对象laowang = Student()print(laowang.name,laowang.addr) # 打印结果:"laowang","gebi"
- 带参数类型
class Student(object): def __init__(self,name,addr): self.name = name self.addr = addrlaowang = Student("laowang","gebi")print(laowang.name,laowang.addr) # 打印结果:"laowang","gebi"
魔法方法(str)
作用:指定输出你想要的东西(不实现此方法,打印结果为该对象的地址)
class Student(object): def __str__(self): return "隔壁老王"laowang = Student()print(laowang) # 打印结果:"隔壁老王"
del方法
当一个对象没有在使用(引用计数器为0)时,系统会将这个对象销毁,此时将会调用此方法
class Student(object): def __init__(self): self.__name = "laowang" self.__addr = "gebi" def __del__(self): print("对象已经被销毁")
私有属性
私有属性:不会被子类继承,对象不可直接使用。类似于Java中private定义的属性。在接下来的Python学习当中,建议多用私有属性,少用公开属性
class Student(object): def __init__(self): self.__name = "laowang" self.__addr = "gebi" def setName(self,name): self.__name = name def getName(self): return self.__namelaowang = Student()# 错误用法laowang.__name = "帅哥"print(laowang.__name)# 正确用法laowang.setName("帅哥")print(laowang.getName())
私有方法
私有方法:不会被子类继承,对象不可直接使用
class Person(object): def __test(self): print("私有方法") def test1(self): self.__test()laowang = Person()# 错误用法laowang.__test()# 正确用法(间接调用)laowang.test1()
继承
class Person(object): def __init__(self): self.name = "laowang" self.addr = "gebi"class Student(Person): pass # 一个类不能什么都不写(方法也是一样),但是此时没想好怎么写,可用pass占位# 此时代表Student类继承了Person类,Student类是Person类的子类,Student将可以使用Person的一些公开属性(如当前定义的name,addr)
父类方法的重写
class Person(object): def test(self): print("一个Person类")class Student(Person): def test(self): # 调用父类的test方法,有三种方式. # Person.test(self) # super().test() # super(Student,self).test() # 新式类写法 print("一个Student类")laowang = Student()laowang.test()
多继承
多继承状态下,若子类调用一个父类的方法,会按继承顺序先后查找。在下面的代码中,会先从Person类中找,若找不到,才会往Animas类中找
class Person(object): def test(self): print("一个Person类")class Animals(object): def test(self): print("一个Animals类")class PythonDemo(Person,Animals): passlaowang = PythonDemo()laowang.test() # 此时打印的为Person类中的test方法
阅读全文
0 0
- Python-基础学习笔记(五)
- python基础学习笔记(五)
- Python基础学习<五>
- python学习笔记:五
- Python学习笔记(五)
- Python学习笔记:五
- python基础学习(五)
- Python基础学习(五)
- Python学习笔记(五)
- Python个人学习笔记五
- python学习笔记(五)
- python 学习笔记 (五)
- python学习笔记(五) - 模块
- python学习笔记(五)
- Python学习笔记(五)
- Python学习笔记(五)
- Python学习笔记(五)
- python基础教程学习笔记五
- python cookbook学习笔记十二:XML解析
- 嵌入式Linux基础学习(一)
- 关于怎样删除myEclipse的工作空间记录
- Hadoop单机模式和伪分布式搭建教程CentOS
- 【原创】WIN10安装Modelsim10.4c及和谐
- Python-基础学习笔记(五)
- codeforces235E
- c++实验6-矩阵求和
- matlab产生扫频余弦信号 chirp用法
- c/c++ 函数指针的用法
- 作用域
- HNOI2013解题报告
- “System.Configuration”中不存在类型或命名空间名称“ConfigurationManager”
- ios mysql 学习1 首先建立自己的主页及数据