封装
一个对象用多少引用:使用sys.getrefcount()
面向对象的三大特征:封装、继承、多态
封装:
在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其
含义是其他程序无法调用。
要了解封装,离不开“私有化”,就是将类或者是函数中的某些属性限制在某个区域之内,外部无法调用。
给父类传值的方法:
父类.属性,或self.属性或父类.__init__(self,参数)或super(父类,self).__init__(参数)四种方法
class A: def __new__(cls,name): return object.__new__(cls) def __init__(self,name): self.name=name a=A("TOM") print(a.name)
运行结果TOM
私有属性:
两个下划线开头,声明的变量为私有变量。默认共有变量
方法重写:
子类和父类同名不同参,子类重写了父类的方法,当生成子类对象时,调用的是子类重写的方法
如果子类重写的方法想调用父类的方法时,在子类方法中:父类.方法(self)或super().父类方法()
class Person: def __init__(self,name=None,age=None,sex=None): self.name=name self.age=age self.sex=sex def __str__(self): return "我的姓名:{0},年龄是{1},性别是{2}".format(self.name,self.age,self.sex) class Student(Person): def __init__(self,name=None,age=None,sex=None,score=None,): # 给父类传参四种方式————————方式一: # Person.name=name # 方式二: # Person.__init__(self,name,age,sex,score) # 方式三: # self.age=age # self.sex=sex # 方式四: super(Student, self).__init__(name, age, sex) self.score = score def __str__(self): return "我的姓名:{0},年龄是{1},性别是{2},我的成绩{3}".format(self.name,self.age,self.sex,self.score) stu=Student("张三",21,"男",39)print(stu)运行结果 我的姓名:张三,年龄是21,性别是男,我的成绩39
继承:
继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类
多态:
多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)
异常
def device(): try: 1/0 except ZeroDivisionError as zc: print("除数不能为零") print(zc)
运行结果 除数不能为零
device() #返回异常的结果
for i in range(1,11): if i%3==0: print(i) break else: print("没有 ")
运行结果 3
在Python中异常可以使用sele语句