#一、类、对象定义及使用#定义类语法:class 类名(父类):代码块注意:()可有可无#class Student:#class Student():#创建对象(实例)语法:对象名=类名() 注意:Java语言在实例化对象是,采用new关键字,而Python语言不需要。#student=Student()#isinstance()语法:isinstance()是检测一个对象是否是一个类的实例,语法格式:isinstance(对象,类),结果返回True和False# class Student:# print(123)# student=Student()# print(isinstance(student,Student)) #True#二、属性和方法#1.属性# 属性:分为类属性和对象属性# 属性修饰符:私有属性、公共属性#(1)类属性# class Student:# name='张三'#(2)对象属性# class Student:# name='张三'# student=Student()# student.age=18# print(student.name) #张三# print(student.age) #18#拓展:类属性和对象属性的区别?# 类属性直接通过类名就可以调用,比如:Student.name# 对象属性必须通过对象名调用,比如:studentn.name#(3)公共属性# 没有任何修饰符,该类型的属性可以被任意一个对象所调用#name="张三"#print(name)#(4)私有属性# 私有属性,不能通过对象调用,也不能通过类名调用,只能在本类中调用,# 类似Java语言中的private,如果想要在外部调用,则需提供get和set方法,私有属性通过双下划线修饰__# __name='李四'# print(__name) #李四#2.方法#方法分类:对象方法、类方法、静态方法#(1)对象方法# 定义在类中的函数被称为方法,所有的实例都可以访问# 注意:对象方法,必须默认传递一个参数self,类似java中的this关键字# 调用:只能通过对象调用#定义对象方法# class Student:# def study(self):# print("我还在学习")# #调用# student=Student()# student.study() #我还在学习# (2)类方法# 被@classmethod修饰的方法,被称为类方法# 参数:cls# 调用:可以通过类调用#定义类方法# class Student:# @classmethod# def sleep(cls):# print("睡觉")# #调用# Student.sleep() #睡觉#(3)静态方法# 被@staticmethod修饰的方法,被称为静态方法# 参数:无参数# 调用:可以通过类和对象调用#定义静态方法# class Student:# @staticmethod# def play():# print("play basketball")# #调用# #类名调用# Student.play() #play basketball# #对象调用# student=Student()# student.play() #play basketball#三、构造方法# 构造方法是以双下划线__开头,双下划线__结尾,方法名叫init,构造方法不需要自己调用,# 在实体化对象时调用,和Java中的构造方法一样,语法格式:def __init__(self,参数):代码块# class Student:# name='sss'# __age=18 # def __init__(self,name,age):# print(456)# self.name=name# self.__age=age# student=Student('张三','19')# print(student.name)#四、封装# 封装,是给类中的属性提供get、set方法,语法格式:# def set方法(self):代码块# def get方法(self):代码块# class Student:# __name='sss'# def setName(self,name):# self.name=name# def getName(self):# return self.name# student=Student()# student.setName('张三')# print(student.getName()) #张三#get、set装饰器# get方法装饰器:@property# set方法装饰器:@属性名.setter# 调用:直接通过对象.属性名即可# 注意:get方法修饰器必须写到set方法修饰器前面# class Student:# __name='张三'# print(__name) #张三# @property# def name(self):# return self.__name# @name.setter# def name(self,name):# self.__name=name# student=Student()# student.name='李四'# print(student.name) #李四# 五、继承# 继承语法class 子类(父类1,父类2):通过语法格式可以看出Python语言支持多继承,Java语言只支持单继承class Student: name='sss' __age=18 def __init__(self,name,age): print(name) self.name=name self.__age=age def study(self): print("Student我还在学习")class Person: def study(self): print("Person我还在学习")class Boy(Student): def sleep(self): print("睡觉") # def study(self): # print("Boy我还在学习")#issubclass()# issubclass()方法作用:# 检测一个类是否是另外一个类的子类# 语法:issubclass(子类,父类)print(issubclass(Boy,Student)) #Trueprint(issubclass(Boy,Person)) #False# 多继承# 查看一个类的继承关系使用:# 类名.__bases__属性# 多继承特点:一层一层获取,先找自己的类中,再从继承关系中找print(Boy.__bases__) #(,)boy=Boy('何洋',19) #何洋boy.study() #Student我还在学习boy.sleep() #睡觉# 六、多态class Student: __name='aaa' print("这是Student") def __init__(self,name): self.__name=name @property def name(self): return self.__name @name.setter def name(self,name): self.__name=name class Boy: __name='aaa' print("这是Boy") def __init__(self,name): self.__name=name @property def name(self): return self.__name @name.setter def name(self,name): self.__name=nameclass Girl: print("这是Girl")def eat(obj): print("%s正在吃饭"%obj.name)student=Student('李四')boy=Boy('小男孩')girl=Girl()eat(student) #李四正在吃饭eat(boy) #小男孩正在吃饭eat(girl) #报错
今天学了python感觉收获颇多。