沉浸式过Python基础(6-面向对象编程)

Posted 不想想了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了沉浸式过Python基础(6-面向对象编程)相关的知识,希望对你有一定的参考价值。

面向对象编程是一种程序设计的方法,主要思想是将数据和用于操作这些数据的方法组合成一个独立的对象。面向对象编程中常常使用类(class)、对象(object)、属性(attribute)、方法(method)等概念来描述程序的特征和行为。

下面是一个简单的面向对象编程的代码示例:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(" is barking!".format(self.name))

    def get_age(self):
        return self.age

    def set_age(self, new_age):
        self.age = new_age


my_dog = Dog("Buddy", 3)
my_dog.bark()
print(my_dog.get_age())

my_dog.set_age(5)
print(my_dog.get_age())

在上述代码中,我们定义了一个名为 Dog 的类。该类包含了两个属性 nameage,以及三个方法:__init__barkget_ageset_age

  • __init__ 方法是一个特殊方法,用于初始化新创建的对象。在初始化过程中,它会接收两个参数 nameage,并将它们分别赋值给 self.nameself.age 这两个属性。
  • bark 方法用于让狗叫。它只打印一条消息,告诉我们哪只狗在叫。
  • get_age 方法用于获取狗的年龄。它只返回 self.age 这个属性。
  • set_age 方法用于设置狗的年龄。它接收一个参数 new_age,并将其赋值给 self.age 这个属性。

然后我们创建了一个名为 my_dog 的对象,并将其初始化为一只名叫 “Buddy”、年龄为 3 岁的狗。我们调用了 my_dog.bark() 方法,让狗叫了一声。然后使用 my_dog.get_age() 方法获取狗的年龄,并输出结果。接着我们使用 my_dog.set_age(5) 方法将狗的年龄改为 5 岁,并再次输出狗的年龄。

上述代码就是一个简单的面向对象编程的示例,通过定义类来描述狗这个对象的属性和行为。它可以让我们更加方便地管理程序中的数据和操作,提高程序的可读性和可维护性。

python基础之面向对象编程

python基础之面向对象编程

1:面向过程编程

面向过程编程就是把一件事,按照步骤一步一步的完成,最后这件事给完成了。但是如果中途有那一个步骤没完成,那这个事就没有完成。(一环扣一环)
如果后期那一段代码需要修改,牵一发而动全身,所以引出了面向对象编程

1:什么是对象?

对象就是男(女)朋友?这个可不是程序中的对象。对象就是是数据和功能的整体包装。

2:为什么要有对象?

面向过程编程是把复杂问题简单化,但是扩展性不好,所以吗就引出了面向对象编程,解耦合强,扩展性好

3:如何使用对象?

使用对象就是使用类

4:什么是类?

类是对象与对象之间的相同的数据与功能的集合体

5:如何使用类?

一:定义
# 使用类必须先定义它
class 类名(): # 类名使用驼峰命名,括号可要也行,不可要也行
    pass     # 数据和功能

# 在程序执行时:申请内存空间,把对象相同的数据和功能存起来,同时也会执行类
二:初始版本
class  Students:
    # 学生对象相同的数据
    school = ‘东京校区‘
    
    # 学生对象相同的功能
    def choose_course(self):
        print("正在选课")
	print("正在化妆》》》》》》》》")

print(Students.__dict__)

# 通过调用类来产生对象:也称实例化了一个对象
# 调用的本质是与类空间产生关联
s1 = Students()
s2 = Students()
s3 = Students()

print(s1.__dict__)
print(s2.__dict__)
print(s3.__dict__)

s1.name = "Alan"
s1.age = 18
s1.gender = "male"

s2.name = "Kela"
s2.age = 39
s2.gender = "female"

s3.name = "Red"
s3.age = 28
s3.gender = "male"

print(s1.__dict__)
print(s2.__dict__)
print(s3.__dict__)
三:优化


优化

class Student:
    school = "东京校区"

    def func(self):
        print(‘学生相同的功能‘)

s1 = Student()
s2 = Student()
s3 = Student()

def init(self,x,y,z):
    self.name = x
    self.age = y
    self.gender = z

init(s1,"Alan",18,"male")
init(s2,"Kela",39,"female")
init(s3,"Red",28,"male")

print(stu1.__dict__)
print(stu2.__dict__)
print(stu3.__dict__)

四:精华版

class Students:
    school = ‘东京校区‘
    def __init__(self,name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex


    def func(self):
        print("学生的功能")
      
s1 = Students(‘Alan‘, 18, ‘male‘)
s2 = Students(‘Kela‘, 39, ‘female‘)
s3 = Students(‘Red‘, 28, ‘male‘)
print(s1.__dict__)
print(s2.__dict__)
print(s3.__dict__)
wanings1:self这个是形参而已,可以取任何名字。为什么实例化的时候没有传参了,其实是python内部帮我传参了,而且参数是你要实例化的名字,所以就取名为self
warnings2:
	1:调用类,会创建一个对象空间,同时对象空间与类空间有建立了关系
    2:会触发类内__init__()这个方法
    3:返回一个初始化后的对象,可以赋值给变量名

6:属性操作

一:类属性操作

class Students:
    school = ‘东京校区‘ # 这个也称为公有属性
    def __init__(self,name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
		# 这里还可以加好多坨代码,但是必须要返回None的值

    def func(self):
        print("学生的功能")
print(Studnets.school)
print(Students.name) # 这个属性无法访问,这个是具体实例化对象的属性
print(Students.func(‘a‘)) # 这个是要自己传参的,因为只有实例化的时候,内部可以帮忙带传,如果是类调用方法的话,这个函数有几个参数就需要传几个参数
print(Students.__init__(‘aa‘,‘bb‘,18,‘male‘))

二:对象属性操作

class Students:
    school = ‘东京校区‘
    def __init__(self,name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex


    def func(self):
        print("学生的功能")
      
s1 = Students(‘Alan‘, 18, ‘male‘)
s2 = Students(‘Kela‘, 39, ‘female‘)
s3 = Students(‘Red‘, 28, ‘male‘)
print(s1.__dict__)
print(s1.name)
print(s1.school)
s1.school=‘千代田校区‘
print(s1.name)
print(Students.school)
s1.func() # 这个不需要参数,这个是因为,在实例化对象的时候,内部代传的参数

以上是关于沉浸式过Python基础(6-面向对象编程)的主要内容,如果未能解决你的问题,请参考以下文章

面向对象知识点回顾整理

Python基础6 面向对象编程

Python基础6-1 面向对象编程

Python基础6-2 面向对象编程

Day6 - Python基础6 面向对象编程

Python基础之类与模块化