1. 对象
1.1多态
意味着可以对不同类的对象使用同样的操作
1.2封装
对外部世界隐藏对象的工作细节
1.3继承
以通用的类为基础建立专门的类对象
2.类和类型
2.1 创建类
#创建类 class mycalss: z = 10086 #类的方法与普通的函数有一个特别的区别,它们必须有一个额外的第一个参数名称self #self可以随便叫什么,比如this,但是因为它代表对象自身,所以习惯叫做self def add(self,x,y): print(x+y) def getting(self): print("Hello") def info(self,name,age): self.name = name self.age = age obj = mycalss() obj.getting() obj.add(2,3) obj.info("Bob","18") print(obj.name,obj.age) 输出: Hello 5 Bob 18
2.2 私有化
class mycalss: name = "Bob" #私有化方法 def __inaccessible(self): print("现在__inaccessible从外部是无法访问的") obj = mycalss() #访问name print(obj.name) #可以修改name obj.name = "Jack" print(obj.name) obj.__inaccessible() 输出: Bob Jack Traceback (most recent call last): File "c:UsersjmDesktopPythonSpaceUntitled-6.py", line 17, in <module> obj.__inaccessible() AttributeError: 'mycalss' object has no attribute '__inaccessible'
class mycalss: name = "Bob" #私有化方法 现在__inaccessible从外部是无法访问的 def __inaccessible(self): print("__inaccessible") def accessible(self): self.__inaccessible()#方法内部可以访问 obj = mycalss() obj.accessible() 输出: __inaccessible
2.3类的属性
可以使用点(.)来访问对象的属性
也可以使用以下函数的方式来访问属性:
getattr(obj, name[, default]) : 访问对象的属性
hasattr(obj,name) : 检查是否存在一个属性
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性
delattr(obj, name) : 删除属性
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性
2.4 继承
class Filter: def init(self): self.blocked = [] def filter(self,sequence): return [x for x in sequence if x not in self.blocked] class SPAMFilter(Filter):#SPAMFilter是Filter的子类(单继承) def init(self):#重写init方法 self.blocked = ["SPAM"] f = Filter() f.init() print(f.filter([1,2,3])) s = SPAMFilter() s.init() print(s.filter(["SPAM","SPAM","eggs","bacon","SPAM"]))#过滤“SPAM” 输出: [1, 2, 3] ['eggs', 'bacon']
#多继承 class class1(object): def getting(self): print("class1") class class2(object): def getting2(self): print("class2") class class3(class1,class2): pass cl = class3() cl.getting() cl.getting2() 输出: class1 class2
2.5构造函数
class student(object): def __init__(self, name,age): self.name = name self.age = age s = student("Bob","18") print(s.name,s.age) 输出: Bob 18