Python3 面向对象学习笔记

一、类和对象

1.1 类的定义

在 Python 中,使用关键字 class 定义一个类:

pythonCopy Code
class MyClass: pass

1.2 对象的创建

使用类名后面加上括号来创建一个对象:

pythonCopy Code
my_obj = MyClass()

1.3 实例变量和方法

在类中定义的变量叫做实例变量,可以在类的任何方法中使用:

pythonCopy Code
class MyClass: def __init__(self, name): self.name = name def say_hello(self): print("Hello, " + self.name) my_obj = MyClass("Tom") my_obj.say_hello() # 输出:Hello, Tom

1.4 类变量与类方法

在类中定义的变量叫做类变量,它是所有对象共享的:

pythonCopy Code
class MyClass: count = 0 def __init__(self): MyClass.count += 1 @classmethod def get_count(cls): print("There are {} instances of MyClass".format(cls.count)) obj1 = MyClass() obj2 = MyClass() MyClass.get_count() # 输出:There are 2 instances of MyClass

二、继承与多态

2.1 继承

子类可以继承父类的属性和方法:

pythonCopy Code
class Animal: def __init__(self, name): self.name = name def make_sound(self): pass class Dog(Animal): def make_sound(self): print("Woof!") class Cat(Animal): def make_sound(self): print("Meow!") dog = Dog("Tommy") dog.make_sound() # 输出:Woof! cat = Cat("Kitty") cat.make_sound() # 输出:Meow!

2.2 多态

子类重写父类的方法,实现不同的功能:

pythonCopy Code
def make_animal_sound(animal): animal.make_sound() dog = Dog("Tommy") cat = Cat("Kitty") make_animal_sound(dog) # 输出:Woof! make_animal_sound(cat) # 输出:Meow!

三、封装

3.1 公有和私有成员

在 Python 中,可以使用下划线来表示公有和私有成员:

pythonCopy Code
class MyClass: def __init__(self, public_var, private_var): self.public_var = public_var self._private_var = private_var obj = MyClass("public", "private") print(obj.public_var) # 输出:public print(obj._private_var) # 输出:private

3.2 属性装饰器

使用属性装饰器来对属性进行封装:

pythonCopy Code
class MyClass: def __init__(self, var): self._var = var @property def var(self): return self._var @var.setter def var(self, value): if not isinstance(value, int): raise TypeError("var must be an integer") self._var = value obj = MyClass(10) print(obj.var) # 输出:10 obj.var = 20 print(obj.var) # 输出:20 obj.var = "abc" # 抛出异常:TypeError: var must be an integer

四、总结

Python 的面向对象编程提供了类、对象、继承、多态和封装等特性,能够帮助我们更好地组织代码,提高代码的复用性、可读性和可维护性。在实际应用中,需要根据业务需求灵活运用这些特性,才能写出更优雅、高效、健壮的代码。