一、Python面向对象编程简介
Python是一种面向对象编程语言,它将数据和操作数据的方法组合成对象,对象具有某种行为和特性,是现实世界中的实体的抽象。在Python中,类是对象的抽象,它定义了一组属性和方法,通过实例化类可以创建对象。Python支持多重继承,因此可以通过继承实现类之间的代码复用和功能扩展。二、Python类的定义
在Python中,可以通过关键字class定义一个类。下面是一个简单的类定义:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
return self.name
def get_age(self):
return self.age
def set_name(self, name):
self.name = name
def set_age(self, age):
self.age = age
这个类名为Person,它有两个属性(name和age)和四个方法(init、get_name、get_age和set_age)。init方法是特殊的方法,用于初始化对象的属性。在这个例子中,init方法将name和age作为参数,并将它们存储为对象的属性。其他方法则用于获取和设置属性的值。
三、Python对象的创建
要创建一个对象,可以使用类名和括号创建一个实例。下面是一个创建Person对象的例子:
person = Person("Alice", 25)
这个例子创建了一个名为person的Person对象,它的name属性为"Alice",age属性为25。
四、Python对象的属性访问
要访问对象的属性,可以使用点号运算符。例如,要访问person对象的name属性,可以使用以下代码:
name = person.name
这个例子将person对象的name属性的值赋值给了变量name。
五、Python对象的方法调用
要调用对象的方法,可以使用点号运算符和括号。例如,要调用person对象的get_name方法,可以使用以下代码:
name = person.get_name()
这个例子调用了person对象的get_name方法,并将返回的值赋值给了变量name。
六、Python继承
Python支持单继承和多重继承。要继承一个类,可以在类定义中指定基类的名称。下面是一个继承Person类的例子:
class StudentTeacher(Person, Teacher):
def __init__(self, name, age, grade, subject):
Person.__init__(self, name, age)
Teacher.__init__(self, subject)
self.grade = grade
def get_grade(self):
return self.grade
def set_grade(self, grade):
self.grade = grade
这个类名为StudentTeacher,它继承自Person和Teacher类。它有两个额外的属性(grade和subject)和两个方法(get_grade和set_grade)。init方法使用Person和Teacher类的init方法分别初始化对象的属性,并将grade作为一个额外的参数。这样就可以使用多重继承来扩展类的功能。
八、Python类的私有属性和方法
在Python中,可以使用双下划线来定义私有属性和方法。私有属性和方法只能在类内部访问,外部无法直接访问。下面是一个私有属性和方法的例子:
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def __get_name(self):
return self.__name
def __get_age(self):
return self.__age
def __set_name(self, name):
self.__name = name
def __set_age(self, age):
self.__age = age
在这个例子中,name和age属性被定义为私有属性,get_name、get_age、set_name和set_age方法被定义为私有方法。它们都使用双下划线作为前缀,这意味着它们只能在类内部访问。
九、Python类的装饰器
Python类的装饰器可以用来修改类的行为或添加额外的功能。常用的装饰器包括@property和@staticmethod。下面是一个@property装饰器的例子:
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name
@property
def age(self):
return self.__age
@age.setter
def age(self, age):
self.__age = age
在这个例子中,name和age属性被定义为私有属性。使用@property装饰器可以将它们转换为公共属性,并使用setter方法来设置它们的值。
十、Python类的继承方法
Python类继承方法包括覆盖、扩展和调用基类方法。覆盖是指在子类中重写父类的方法,以改变方法的行为。扩展是指在子类中添加额外的方法,以扩展父类的功能。调用基类方法是指在子类中调用父类的方法,以重用其功能。下面是一个例子:
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def get_name(self):
return self.__name
def get_age(self):
return self.__age
class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.__grade = grade
def get_grade(self):
return self.__grade
def set_grade(self, grade):
self.__grade = grade
def get_name(self):
return "Student name: " + super().get_name()
def get_age(self):
return "Student age: " + str(super().get_age())
在这个例子中,Student类继承自Person类。它有一个额外的属性(grade)和两个方法(get_grade和set_grade)。它还覆盖了Person类的get_name和get_age方法,以扩展它们的功能。在get_name方法中,使用super()函数调用基类的get_name方法,并在返回值前添加"Student name: "前缀。在get_age方法中,使用super()函数调用基类的get_age方法,并将返回值转换为字符串,并在前面添加"Student age: "前缀。
十一、Python类的特殊方法
Python类有一些特殊方法,它们以双下划线开头和结尾。这些特殊方法可以用于操作类的实例,例如创建、初始化、比较、运算和迭代。下面是一些常用的特殊方法:
__init__(self, ...):初始化方法,在创建类的实例时被调用。
__str__(self):将类的实例转换为字符串。
__eq__(self, other):比较方法,用于检查两个对象是否相等。
__lt__(self, other):比较方法,用于检查一个对象是否小于另一个对象。
__add__(self, other):加法方法,用于将两个对象相加。
__iter__(self):迭代方法,用于将类的实例转换为迭代器。
下面是一个使用特殊方法的例子:
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def __str__(self):
return f"{self.__name} ({self.__age})"
def __eq__(self, other):
return self.__name == other.__name and self.__age == other.__age
class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.__grade = grade
def __str__(self):
return f"{super().__str__()} {self.__grade}"
def __lt__(self, other):
return self.__grade < other.__grade
def __add__(self, other):
return self.__grade + other.__grade
def __iter__(self):
yield self.__name
yield self.__age
yield self.__grade
在这个例子中,Person类定义了str和eq方法。Student类覆盖了Person类的str方法,以添加其额外的属性(grade)。它还定义了lt和add方法,用于比较和加法运算。最后,它定义了iter方法,以将类的实例转换为迭代器。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/11517/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取