面向对象
面向对象概述
### 面向对象是基于过程来的事想,在程序中创建实例化对象,指挥对象做事情(指挥官)
1.面向对象开发
1.1语法格式
class People:
def send_emmail(self,name)
print(f'发送邮件给{name}')
p1=People()
p1.send_email('马云')
2.类中的函数定义
在python中类是一种自定义数据类型,它可以包含属性(变量)和方法(函数)。在类中面向对象编程是一种重要的概念。它允许为对象添加行为。
#示例
lass MyClass:
def __init__(self, name):
self.name = name
def say_hello(self):
print(f"Hello, my name is {self.name}")
在上面的代码中我们定义了一个名为MyClass的类。这个类包含两部分:构造函数__init__和方法say_hello。构造函数用于初始化对象的属性,而方法则定义了对象的行为。
在MyClass类中,我们定义了一个名为say_hello的函数。这个函数接受一个参数self,它表示类的实例本身。在函数内部,我们使用print函数输出一条问候语,其中使用了对象的name属> 性。
要是用这个类我们可以创建一个实例,并调用这个方法:
# 创建一个名为"John"的MyClass实例
my_instance = MyClass("John")
# 调用say_hello方法并输出结果
my_instance.say_hello()
输出结果为
Hello, my name is John
2.1属性和行为
属性:属性是指对象的特征用来表示对象发状态。例如:一个人有姓名年龄属性,汽车有颜色,品牌等特性。在面向对象的编程中属性通常用变量来表示并通过访问器(get)和修改器(set)来
获取和设置属性值。
行为:行为是指对象可以执行的操作和功能。例如:一个人可以吃饭可以睡觉,一个汽车可以汽车可以启动可以停止等。在面向对象编程中行为一般用方法(methon)来表示。方法是一种封装了特定功能的代码块,可以用调用对象的方法来实现对象的行为。
总结:属性是描述对象的状态,行为描述对象可以执行的操作。在面向对象的编程中,通过定义类(class)来创建具有属性和方法的对象。
3.封装,继承,多态
在python中封装,继承,多态是面向对象编程的核心概念,他们使代码更模块化,可维护,可重用
3.1继承
继承是面向对象的一个重要概念,它允许我们创建一个新类并使用这个类的属性和方法。通过继承可以使用已有的代码,减少重复劳动,使代码结构更加清晰。在python中使用class关键字> 来定义类,可以在类名后面加上冒号和基类来实现继承。
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof!"
上面的代码通过创建了一个Animal基类和一个派生类Dog。Dog类继承了Animal类的属性和方法,并覆盖了speak方法。这样,我们就可以使用Dog类来创建狗对象,并调用其speak方法。
3.2封装
封装是将对象的属性和方法封装到一个类里,以隐藏对象的内部实现细节。通过封装我们可以保护对象的属性不被外部随意修改。在python中,使用下划线开头的属性和方法属于私有方法,> 只能在类的内部被访问。
class Person:
def __init__(self, name):
self._name = name # 私有属性
def get_name(self):
return self._name # 公有方法返回私有属性值
在上面代码中我们创建了一个私有属性_name和一个公有方法get_name。通过将_name设置为私有属性,我们确保外部代码无法去修改它。而get_name的方法允许外部代码去获取该属性的 > 值。这种封装方法保护了对象内部的值不被随意修改,确保了代码的完整性和可维护性。
3.3多态
多态指同一操作用于不同对象,产生不同的执行结果。多态的存在让代码更加灵活和可扩展。
class Shape:
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
标签:__,name,对象,self,面向对象,def,属性 From: https://www.cnblogs.com/T3h4t5-Blog90/p/17966487上面我们定义了一个基类Shape和两个派生类Circle,Rectangle,并且三个类都有一个方法area()但是他们实现不同。这样,我们可以根据不同的对象来调用area(),根据对象的实际类型> > 来实现相应的实现。这种多态可以让代码更加灵活和可扩展。