Python面向对象编程实战指南
Python学习之Day05:定制数据对象与面向对象编程
面向对象编程基础
面向对象编程(OOP)的核心思想是将数据与操作数据的方法封装为对象。Python通过类和对象实现OOP,类定义对象的属性和方法,对象是类的实例。
定义类的语法如下:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, my name is {self.name}"
__init__是构造函数,用于初始化对象属性。self表示类的实例,通过它访问属性和方法。
定制数据对象
通过类可以创建定制化的数据对象,例如表示二维坐标的点:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def distance_to_origin(self):
return (self.x**2 + self.y**2)**0.5
调用方式:
p = Point(3, 4)
print(p.distance_to_origin()) # 输出5.0
类属性与实例属性
- 类属性属于类本身,所有实例共享。
- 实例属性属于单个对象。
class Dog:
species = "Canis familiaris" # 类属性
def __init__(self, name):
self.name = name # 实例属性
继承与多态
继承允许子类复用父类的功能并扩展:
class Animal:
def speak(self):
raise NotImplementedError("Subclass must implement")
class Dog(Animal):
def speak(self):
return "Woof!"
多态指不同子类对同一方法的不同实现。
魔术方法定制对象行为
通过__str__、__eq__等魔术方法自定义对象行为:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"Point({self.x}, {self.y})"
def __eq__(self, other):
return self.x == other.x and self.y == other.y
封装与属性控制
使用@property装饰器控制属性访问:
class Temperature:
def __init__(self, celsius):
self._celsius = celsius
@property
def celsius(self):
return self._celsius
@celsius.setter
def celsius(self, value):
if value < -273.15:
raise ValueError("Temperature below absolute zero")
self._celsius = value
应用示例:学生管理系统
结合OOP实现简单学生管理:
class Student:
def __init__(self, id, name, score):
self.id = id
self.name = name
self.score = score
def __str__(self):
return f"ID: {self.id}, Name: {self.name}, Score: {self.score}"
class StudentManager:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
通过以上内容,可以系统掌握Python中面向对象编程的核心概念与实践方法。
BbS.okane326.info/PoSt/1121_209265.HtM
BbS.okane327.info/PoSt/1121_112650.HtM
BbS.okane328.info/PoSt/1121_627039.HtM
BbS.okane329.info/PoSt/1121_427297.HtM
BbS.okane330.info/PoSt/1121_139383.HtM
BbS.okane331.info/PoSt/1121_197514.HtM
BbS.okane332.info/PoSt/1121_879055.HtM
BbS.okane333.info/PoSt/1121_808053.HtM
BbS.okane334.info/PoSt/1121_926307.HtM
BbS.okane335.info/PoSt/1121_164612.HtM
BbS.okane326.info/PoSt/1121_050120.HtM
BbS.okane327.info/PoSt/1121_208650.HtM
BbS.okane328.info/PoSt/1121_213100.HtM
BbS.okane329.info/PoSt/1121_124318.HtM
BbS.okane330.info/PoSt/1121_952763.HtM
BbS.okane331.info/PoSt/1121_906710.HtM
BbS.okane332.info/PoSt/1121_759839.HtM
BbS.okane333.info/PoSt/1121_053363.HtM
BbS.okane334.info/PoSt/1121_439995.HtM
BbS.okane335.info/PoSt/1121_731828.HtM
BbS.okane326.info/PoSt/1121_728928.HtM
BbS.okane327.info/PoSt/1121_123355.HtM
BbS.okane328.info/PoSt/1121_334534.HtM
BbS.okane329.info/PoSt/1121_522688.HtM
BbS.okane330.info/PoSt/1121_283703.HtM
BbS.okane331.info/PoSt/1121_576869.HtM
BbS.okane332.info/PoSt/1121_704365.HtM
BbS.okane333.info/PoSt/1121_610319.HtM
BbS.okane334.info/PoSt/1121_694210.HtM
BbS.okane335.info/PoSt/1121_305444.HtM
BbS.okane326.info/PoSt/1121_816637.HtM
BbS.okane327.info/PoSt/1121_671467.HtM
BbS.okane328.info/PoSt/1121_403978.HtM
BbS.okane329.info/PoSt/1121_990996.HtM
BbS.okane330.info/PoSt/1121_908158.HtM
BbS.okane331.info/PoSt/1121_462120.HtM
BbS.okane332.info/PoSt/1121_252403.HtM
BbS.okane333.info/PoSt/1121_590934.HtM
BbS.okane334.info/PoSt/1121_289884.HtM
BbS.okane335.info/PoSt/1121_444348.HtM
BbS.okane326.info/PoSt/1121_624568.HtM
BbS.okane327.info/PoSt/1121_692512.HtM
BbS.okane328.info/PoSt/1121_368501.HtM
BbS.okane329.info/PoSt/1121_269691.HtM
BbS.okane330.info/PoSt/1121_665373.HtM
BbS.okane331.info/PoSt/1121_176333.HtM
BbS.okane332.info/PoSt/1121_592158.HtM
BbS.okane333.info/PoSt/1121_062610.HtM
BbS.okane334.info/PoSt/1121_811741.HtM
BbS.okane335.info/PoSt/1121_748819.HtM
BbS.okane326.info/PoSt/1121_650974.HtM
BbS.okane327.info/PoSt/1121_567970.HtM
BbS.okane328.info/PoSt/1121_283038.HtM
BbS.okane329.info/PoSt/1121_051732.HtM
BbS.okane330.info/PoSt/1121_262754.HtM
BbS.okane331.info/PoSt/1121_332280.HtM
BbS.okane332.info/PoSt/1121_889286.HtM
BbS.okane333.info/PoSt/1121_788370.HtM
BbS.okane334.info/PoSt/1121_934614.HtM
BbS.okane335.info/PoSt/1121_210656.HtM
BbS.okane336.info/PoSt/1121_836137.HtM
BbS.okane337.info/PoSt/1121_724064.HtM
BbS.okane338.info/PoSt/1121_179326.HtM
BbS.okane339.info/PoSt/1121_748533.HtM
BbS.okane340.info/PoSt/1121_791342.HtM
BbS.okane341.info/PoSt/1121_859229.HtM
BbS.okane342.info/PoSt/1121_110871.HtM
BbS.okane343.info/PoSt/1121_466961.HtM
BbS.okane344.info/PoSt/1121_238643.HtM
BbS.okane345.info/PoSt/1121_637976.HtM
BbS.okane336.info/PoSt/1121_070520.HtM
BbS.okane337.info/PoSt/1121_967314.HtM
BbS.okane338.info/PoSt/1121_782691.HtM
BbS.okane339.info/PoSt/1121_686580.HtM
BbS.okane340.info/PoSt/1121_296235.HtM
BbS.okane341.info/PoSt/1121_098579.HtM
BbS.okane342.info/PoSt/1121_762016.HtM
BbS.okane343.info/PoSt/1121_518760.HtM
BbS.okane344.info/PoSt/1121_640784.HtM
BbS.okane345.info/PoSt/1121_979977.HtM
查看23道真题和解析