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 | 受保护的成员,不能使用 |
__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)