类的声明格式如下:
class 类名称:
成员变量1
成员变量2
def __init__(self, 参数列表):
成员变量1 赋值
成员变量2 赋值
def 成员方法(self, 参数列表):
成员方法体
# 内置方法__str__ , 类似于Java的toString方法
# 内置方法__lt__ , 只能对比对象之间的大于小于,不能对比等于
# 内置方法__le__ , 可以对比对象之间的大于等于或者小于等于
# 内置方法__eq__ , 对比对象之间的等于
对象 = 类名称()
类的构造函数__init__
def __init__(self, xxx, xxx):
self.xxx = xxx
self.xxx = xxx
类内置的方法
- "__str__"(类似于Java的toString这种)
def __str__(self):
return f'对象Student:name={self.name}, age={self.age}'
- "lt"(只能对比大于小于,不能对比等于)
- "le"(可以对比大于等于或者小于等于)
- "eq"(对比等于)
类的私有方法
以双下划线开头的函数,私有方法不能被实例调用
def __private_method(self):
print('从外部你调用不到我')
类的多继承
使用(xxx, yyy)这种写法
class CollegeStudents(Person, Student):
pass # 仅仅是占位,没啥意义
类的复写
直接在子类中定义和父类一样的函数即可复写
调用父类的成员变量和方法
- 父类名.成员变量或者方法
- super().成员变量或者方法
类声明示例如下:
# 人类
class Person:
gender = None
def __init__(self, gender):
self.gender = gender
def set_gender(self):
self.gender = '女'
print(self.gender)
# 学生
class Student:
name = None
age = None
__weight = None # 私有变量
# 构造函数 __init__
def __init__(self, name, age):
self.name = name
self.age = age
# 类似于Java的toString方法
def __str__(self):
return f'对象Student:name={self.name}, age={self.age}'
# 只能对比大于小于,不能对比等于
def __lt__(self, other):
return self.age < other.age
# 可以对比大于等于或者小于等于
def __le__(self, other):
return self.age < other.age
# 对比等于
def __eq__(self, other):
return self.age == other.age
def get_weight(self):
print(self.__weight)
def set_weight(self, weight):
self.__weight = weight
# 私有方法不能被对象实例调用
def __private_method(self):
print('从外部你调用不到我')
def say_hi(self):
print(f'hi! my name is {self.name}')
# 多继承的子类
class CollegeStudents(Person, Student):
pass # 仅仅是占位,没啥意义
使用示例:
stu1 = Student('刘亦菲', 18)
stu2 = Student('高圆圆', 19)
print(stu1 == stu2)
stu1.set_weight(100)
stu1.get_weight()
# 子类声明
cs = CollegeStudents('女', '刘德华', 80)
cs.get_weight()