1、创建类
格式:
class 类名:
类属性
类方法
注意,无论是属性还是方法,对于类来说,他们都不是必需的,可以有也可以没有。另外,Python类中属性和方法所在的位置是任意的,
即它们之间并没有固定的前后次序
创建类对象的语法: 对象 = 类名称()
成员方法的定义语法:
def 方法名(self, 形参):
方法体
self关键字是成员方法定义时,必须填写的。
它用来表示类对象自身的意思。
在方法内部,想要访问类的成员变量,必须使用self (self.成员变量)
2、构造方法 __init__()方法
可以实现:
在创建类对象(构造类) 的时候,会自动执行
在创建类对象(构造类) 的时候,将传入参数自动传递给__init__方法使用
class Student:
name = None # 这三个就可以省掉,有了构造函数
age = None
tel = None
def __init__(self,name,age,tel):
self.name = name
self.age = age
self.tel = tel
stu = Student("sdj",'32','123456') # 直接传入参数
3、魔术方法
内置的类方法,各有各自特殊功能,这些内置方法我们称之为:魔术方法
比如
1)__str__字符串方法:控制类转化为字符串行为。返回值是字符串。
2)__lt__小于符号比较:直接两个对象比较是不行的,但是在类中实现__lt__方法,课同时完成小于、大于符号的比较。
def __lt__(self,other):
return self.age < other.age
传入参数:other、另一个类对象;返回值:True或False
3)__le__用于<=或>=两个比较运算符上
4)__eq__比较是否相等(使用方法同上)
5)还有很多其他的魔术方法......
4、封装
类中提供了私有成员的形式来支持
私有成员:(类对象不能访问、但可以被类中其他成员使用)
私有成员变量:变量名以__开头(2个下划线) 只有内部的成员才能使用,外部对象不行
私有成员方法:方法名以__开头(2个下划线)
例子:
class Aphone:
__is__5g_enable = False
def __check_5g(self):
if self.__is__5g_enable == True:
print("5g开启")
else:
print("5g关闭,使用4g网络")
def call_by_5g(self):
self.__check_5g()
print("正在通话中")
phone = Aphone()
phone.call_by_5g() # 只能访问这个公开方法,不能直接访问私有成员方法
5、继承
class 类名(父类1,父类2....):
pass # 占位的,保证类定义的完整性
类内容体
如果父类同名了,左边优先级更高。(先先来,先优先级高)
复写:子类继承父类的成员属性和成员方法后,如果对其不满意,可以在子类复写,即,在子类中重新定义同名的属性或方法。(与C + +类似)
调用父类的同名成员:
法一:
成员变量:父类名.成员变量
成员方法:父类名.成员函数(self) # self必须加
法二:
使用super()
调用父类成员
成员变量:super().成员变量
成员方法:super().成员方法() # 这里不用写self
6、多态
同样的行为(函数),传入不同的对象,得到不同的状态。
抽象类(接口):含有抽象方法的类
抽象方法:方法体是空实现的(pass)称之为抽象方法
如:定义一个函数(方法),通过类型注解声明需要的父类对象,实际传入子类对象
进行工作,从而获得不同的工作状态
类:面向对象
最新推荐文章于 2024-06-21 12:33:31 发布