本文共 5785 字,大约阅读时间需要 19 分钟。
python是一门面向对象编程的语言
基本格式如下:
class ClassName: # class 类的标识符 ClassNmme 类的名称# 类的语句 . .
类对象的操作
类对象支持两种操作:属性引用和实例化。InstanceName=ClassName() # 类的实例化 InstanceName.AttributeName # 类的属性引用
- 类的构造方法
类有一个名为 init() 的特殊方法(构造方法),该方法在类实例化时会自动调用class User: userName = 'wanggang' userID='001' def __init__(self,author): # 类的构造方法,当类实例化时会调用该方法,该方法可以携带参数 self.userName='lisi' self.author=author # 将参数赋值给self.author def Score(self,ChineseScore,MathScore): return self.author+"创作得分"+str(ChineseScore+MathScore) user = User('苏轼'); # 类实例化时会自动调用类的构造方法 print(user.userName) # 访问类的属性 --属性引用 print(user.Score(80,80)) # 访问类的方法 --属性引用
类的方法必须有一个特别的参数self,self代表类的实例,不是类本身
class User: userName = 'wanggang' userID='001' def __init__(self, author): # 类的构造方法,当类实例化时会调用该方法,该方法可以携带参数 self.userName='lisi' self.author=author # 将参数赋值给self.author def Score(self,ChineseScore,MathScore): # self代表类的实例 return self.author+"创作得分"+str(ChineseScore+MathScore) # self.author 代表类的实例参数author user = User('苏轼'); # 类实例化时会自动调用类的构造方法 print(user.Score(80,80))
类的方法用def 定义
类的方法必须要self参数,且为第一个参数
self参数表示类的实例
class User: # 定义类的属性 userName = 'wanggang' userID='001' # 定义类的方法 def Score(self,ChineseScore,MathScore): # self代表类的实例 return self.author+"创作得分"+str(ChineseScore+MathScore) # self.author 代表类的实例参数author
方法重写
class User: # 定义类的属性 userName = 'wanggang' userID='001' def __init__(self, author): # 类的构造方法,当类实例化时会调用该方法,该方法可以携带参数 self.userName='lisi' self.author=author # 将参数赋值给self.author def score(self,ChineseScore,MathScore): # self代表类的实例 return self.author+"创作得分"+str(ChineseScore+MathScore) # self.author 代表类的实例参数author class ZUser(User): # 类的继承 # 重写父类score方法 def score(self,ChineseScore,MathScore,English): # 子类继承父类,默认继承了父类的初始化方法 return self.author + "创作得分" + str(ChineseScore + MathScore+English) user = User('苏轼'); # 类实例化时会自动调用类的构造方法 print(user.score(80,80)) zuser = ZUser("苏轼"); print(zuser.score(30,4,2))
私有方法
__privateMethod:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__privateMmethodsclass User: # 定义类的属性 userName = 'wanggang' userID='001' def __init__(self, author): # 类的构造方法,当类实例化时会调用该方法,该方法可以携带参数 self.userName='lisi' self.author=author # 将参数赋值给self.author def __document(self): # 定义一个私有方法,以双下划线开头的方法,私有方法只能在类内部引用,不能在外部引用 return "这是一个user类" def score(self,ChineseScore,MathScore): # self代表类的实例 # 调用类的私有方法self.__document() return self.__document()+self.author+"创作得分"+str(ChineseScore+MathScore) # self.author 代表类的实例参数author class ZUser(User): # 类的继承 # 重新父类score方法 def score(self,ChineseScore,MathScore,English): # 子类继承父类,默认继承了父类的初始化方法 return self.author + "创作得分" + str(ChineseScore + MathScore+English) user = User('苏轼'); # 类实例化时会自动调用类的构造方法 print(user.score(80,80)) # print(user.__documet()) # 调用会报错 zuser = ZUser("苏轼"); print(zuser.score(30,4,2))
类的继承
class DerivedClassName(BaseClassName1): # 类的继承. . .
多继承
class DerivedClassName(Base1, Base2, Base3): # 类的多继承. . .
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods
class User: # 定义类的属性--公有属性 userName = 'wanggang' userID='001' # 定义类的属性--私有属性 __age = 20 __addr = 'xxxxx' # 定义类的初始化方法 def __init__(self, author): self.userName='lisi' self.author=author # 将参数赋值给self.author # 定义类的静态方法,直接使用类名.方法名调用、可以不用参数 @staticmethod def school(): return '第一中学' # 定义类方法,默认有个cls参数,可以被对象和类调用 @classmethod def classMessage(cls): return "这是一个类方法" # 定义类的私有化方法 def __document(self): # 定义一个私有方法,以双下划线开头的方法,私有方法只能在类内部引用,不能在外部引用 return "这是一个user类" # 定义类的方法 def score(self,ChineseScore,MathScore): # self代表类的实例 # 调用类的私有方法self.__document() return self.__document()+self.author+"创作得分"+str(ChineseScore+MathScore) # self.author 代表类的实例参数author user = User('苏轼'); # 类实例化时会自动调用类的构造方法 print(user.score(80,80)) print(user.school()) # 对象调用类的静态方法 print(User.school()) # 类名调用类的静态方法 print(user.classMessage()) # 对象调用类方法 print(User.classMessage()) # 类名调用类方法
类的专有方法
__init__ : 构造函数,在生成对象时调用 __del__ : 析构函数,释放对象时使用 __repr__ : 打印,转换 __setitem__ : 按照索引赋值 __getitem__: 按照索引获取值 __len__: 获得长度 __cmp__: 比较运算 __call__: 函数调用 __add__: 加运算 __sub__: 减运算 __mul__: 乘运算 __truediv__: 除运算 __mod__: 求余运算 __pow__: 乘方
Python同样支持运算符重载,我们可以对类的专有方法进行重载,实例如下:
class Vector: def __init__(self, a, b): self.a = a self.b = b def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b) def __add__(self, other): return Vector(self.a + other.a, self.b + other.b) v1 = Vector(2, 10) v2 = Vector(5, -2) print(v1 + v2)
转载地址:http://kaqms.baihongyu.com/