Python3 面向对象学习笔记
一、类和对象
1.1 类的定义
在 Python 中,使用关键字 class
定义一个类:
pythonCopy Codeclass MyClass:
pass
1.2 对象的创建
使用类名后面加上括号来创建一个对象:
pythonCopy Codemy_obj = MyClass()
1.3 实例变量和方法
在类中定义的变量叫做实例变量,可以在类的任何方法中使用:
pythonCopy Codeclass 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 Codeclass 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 Codeclass 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 Codedef 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 Codeclass 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 Codeclass 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 的面向对象编程提供了类、对象、继承、多态和封装等特性,能够帮助我们更好地组织代码,提高代码的复用性、可读性和可维护性。在实际应用中,需要根据业务需求灵活运用这些特性,才能写出更优雅、高效、健壮的代码。