Python类的概念
类是封装对象的属性和行为的载体,具有相同属性和行为的实体被称为类;这是一个抽象的概念
封装
将对象的属性和行为封装起来,类是它的载体;类会隐藏其实现细节;封装思想保证了内部数据结构的完整性,该类的用户不能直接看到该类中的数据结构,只能执行该类允许公开的数据,避免了外部对内部数据产生影响
继承
实现重复利用的重要手段,复用了父类的属性和行为的同时有可以添加子类的特有属性和行为
多态
将父对象应用于子类的特征就是多态
定义类
class 类名 :
"类的帮助信息" #文档说明,注释
statement #类体
类定义完成后还需要创建类的实例,否则它不会是真正的实例(相当没用)
class ClassName: #类定义
print("创建类的实例")
HiClass = ClassName() #创建类的实例
给类指定参数
class Geese:
def __init__(self,a,b,c):
print(a,b,c)
wildGoose = Geese('1','2','3')
实例类的访问
class Geese:
def Fun(self,abc):
print(abc)
wildGoose = Geese()
wildGoose.Fun('123')
class SelfTest:
def test(self,CS):
print(CS)
def FJ(self):
self.test("CS")
HiSelfTest = SelfTest()
类属性的访问
class Geese:
shux = 'shux'
def __init__(self):
print(self.shux)
print(Geese.shux)
wildGoose = Geese()
print(wildGoose.shux) # 通过对象访问
print(Geese.shux) # 通过类访问
限制访问
Python并没有对方法和属性的访问权限进行限制;可以方法或属性前面加单下划线、双下划线,可以在首尾加双下划线:
- 首尾双下划线表示定义特殊方法,一般是系统定义名字。如:
__init__
- 以单下划线开头的表示protected(保护)类型的成员,只允许类本身和子类进行访问,*但不能使用“from module import ”语句导入
- 双下划线表示private(私有)类型成员,只允许定义该方法的类本身进行访问,而且不能通过类的实例进行访问,但是可以通过“类的实例名._类名__xxx”方式访问
保护属性
class Swan:
_neck_swan='天鹅类' # 保护属性
def __init__(self):
print("__init__():",Swan._neck_swan) # 在实例方法中访问保护属性
swan=Swan() # 创建Swan实例
print("直接访问:",Swan._neck_swan) #保护属性可以通过类名访问
print("直接访问:",swan._neck_swan) #保护属性可以通过实例名访问
私有属性
class Swan:
__neck_swan='天鹅类' # 私有属性
def __init__(self):
print("__init__():",Swan.__neck_swan) # 在实例方法中访问私有属性
swan=Swan() # 创建Swan实例
print("加入类名:",swan._Swan__neck_swan) # 私有属性可以通过“类的实例名._类名__xxx”方式访问
print("直接访问:",swan.__neck_swan) # 私有不能属性可以通过实例名访问,会报错