
作用:定义类别,减少代码量

Python类是面向对象编程的核心,它允许创建自定义数据类型。通过类,可以封装数据和功能,实现代码复用和模块化。类支持继承,使得代码结构更清晰,功能扩展更灵活。它还支持多态,允许以统一接口处理不同类型的对象。简而言之,类是构建复杂程序的基石。
就是分文件的,分类,分方法,可以实现更多逻辑,更少代码,更容易迁移
| 类(定义类) | __init__()定义初始值 |
-> | 实例化 | 实例化改变color颜色 |
|---|---|---|---|---|
| cat猫 | 蓝色 | -> | Tom | 蓝色 |
| cat猫 | 蓝色 | -> | 咖啡猫 | 黄色 |
| mouse老鼠 | 蓝色 | -> | Jerry | 棕色 |
| mouse老鼠 | 蓝色 | -> | 米奇老鼠 | 黑白色 |

class Dog():"""创建一个Dog类"""def __init__(self, name, age, color="yellow"): # 构造函数"""初始化属性name和age"""self.name = nameself.age = ageself.color = color # 给属性指定默认值self.dbname = '' # 数据表类可以写库名字,建议写到配置文件里self.tablename = '' # 数据表类可以写表名字,建议写到配置文件里def sit(self): # 定义蹲下方法"""蹲下"""print (self.name + " is now sitting.")def roll_over(self): # 定义打滚方法"""打滚"""print (self.name + " rolled over!")def two_action(self): # 组合:先打滚后蹲下self.roll_over()self.sit()
实例化,name, age一定要给、按顺序给,color不一定,但是默认黄色,写一些固定信息
my_dog = Dog('willie', 6)"""访问属性"""print(my_dog.name ) # willieprint(str(my_dog.age)) # 6my_dog.sit() # 调用方法:## willie is now sitting.my_dog.two_action() # 调用方法:## willie rolled over!## willie is now sitting.my_dog.age = 12 # 修改age属性值print(my_dog.age) # 12print(my_dog.color) # yellowmy_dog_2 = Dog('willie', 6, 'black')print(my_dog_2) # 使用不一样的内存空间print(my_dog_2.color) # blackmy_dog_3 = Dog('willie', 7, color='red')print(my_dog_3) # 使用不一样的内存空间print(my_dog_3.color) # red
from car import Car # 从car.py文件中导入Car类from car import Car, ElectricCar # 从car.py文件中导入Car类和ElectricCar类,用逗号from car import * # 导入car.py文件中的所有类
class A:passclass B(A):passprint (issubclass(B,A)) # 返回 True
callable(0)Falsecallable("runoob")False
def add(a, b):return a + bcallable(add) # 函数返回 TrueTrue
class A: # 类def method(self):return 0callable(A) # 类返回 TrueTruea = A()callable(a) # 没有实现 __call__, 返回 FalseFalse
class B:def __call__(self):return 0callable(B)Trueb = B()callable(b) # 实现 __call__, 返回 TrueTrue
class Coordinate:x = 10y = -5z = 0point1 = Coordinate()print (hasattr(point1, 'x'))print (hasattr(point1, 'y'))print (hasattr(point1, 'z'))print (hasattr(point1, 'no')) # 没有该属性输出结果:TrueTrueTrueFalse
class Coordinate:x = 10y = -5z = 0point1 = Coordinate()print ('x = ',point1.x)print ('y = ',point1.y)print ('z = ',point1.z)delattr(Coordinate, 'z')print ('--删除 z 属性后--')print ('x = ',point1.x)print ('y = ',point1.y)## 触发错误print ('z = ',point1.z)
class A(object):bar = 1a = A()getattr(a, 'bar') # 获取属性 bar 值1setattr(a, 'bar', 5) # 设置属性 bar 值a.bar5
class EE():'''文档描述'''bar = 1def aa(self):print ("aafun")print(vars(EE))mappingproxy({'__module__': '__main__','__doc__': '文档描述','bar': 1,'aa': <function EE.aa at 0x7fd738017a70>,'__dict__': <attribute '__dict__' of 'EE' objects>,'__weakref__': <attribute '__weakref__' of 'EE' objects>})