python与Java一样都是面向对象的编程语言,因此具有面向对象的三大性质,封装,继承和多态,首先我们看一下python类的创建,

类的创建

定义一个简单的Student类
代码如下

class Student:
    education ="daz"  #定义一个类变量
    def __init__(self,name):  #构造方法
        self.name=name
s1=Student("huangyueyue") #实例化一个对象
print(s1.name) #使用对象.变量调用
print(s1.education)

继承:从一个通用类(父类)扩展更多特定的类(子类)


实例:在Student类中继承一个highStudent类
继承类需要在创建类的时候传入父类,并且在子类的构造函数中使用super关键字对父类的构造函数再次调用。
代码如下:

class Student:
    education ="daz"  #定义一个类变量
    def __init__(self,name):  #构造方法
        self.name=name
s1=Student("张三") #实例化一个对象
print(s1.name) #使用对象.变量调用
print(s1.education) 

class highStudent(Student):
    def __init__(self,name):
        super().__init__(name)
        self.age=18
    def getage(self):
        print(self.name)
        print(self.age)


hs=highStudent("李四")
hs.getage()

封装:类中既要提供与外部联系的接口

参考这一片博文,Java定义类与类的封装


类中的成员:变量和方法
变量:类变量与实例变量

  • 类变量 :是指在所有方法外部定义的变量
  • 实例变量:一般是在构造方法里面定义的,定义和使用以self作为前缀

方法

  • 公有方法
  • 私有方法:方法以俩条下划线作为前缀
  • 类方法 :不对特定实例进行操作,在该方法中不能访问对象的实例变量,通过标识符@classmethod定义,第一个参数必须是为类对象本身,通常为cls
  • 静态方法:@staticmethod定义

python类的成员没有访问控制权限
python中,以下划线开头的方法名和变量名存特殊含义,尤其是在内定义当中


描述

_xxx

受保护的成员,不能使用 from ? import ?导入

__xxx __

系统定义的特殊成员

__xxx

私有成员,只有类内自己访问

使用封装:代码如下

class Student:
    education ="daz"
    def __init__(self,name):
        self.__name=name #私有成员变量,前缀为俩条下划线
        self.__sno=""
    def setSno(self,sno):
        self.__sno=sno
    def getname(self):
        print(self.__name,self.__sno)

s1=Student("黄月月鸟")
s1.setSno("1825123645")
s1.getname()
#在下一行的输出当中,使用对象.私有对象名,是不能访问到的。所以会报错
print(s1.__name,s1.__sno)