python面向对象编程98讲_Python面向对象编程(上篇)

什么是类呢,什么是对象呢?

举个栗子,当我们说一种动物的时候,我们的侧重点是动物,但是实际上动物可以有很多种类,比如说小狗,小猫,大象等等。"动物"这种称呼是他们之间的共性,而小猫小狗的这些呢,就是动物共性中具有个性中的个体。

而在面向对象编程中,类就像动物一样,是一个抽象体,是许多事物的共性集合体,而小猫呢,就是一个实例,称为对象,是共性中实际的具体对象。

定义

在Python我们可以使用关键词class来定义一个类,并且可以对其进行各项操作

class Student:

# 初始化方法

def __init__(self,name,age):

self.name = name

self.age = age

# 类中的方法,可以获得名称

def getName(self):

return self.name

# 类中方法,可以获取实例化后的年龄

def getAge(self):

return self.age

# 特殊函数,当使用print 对象的时候,返回的字符串,

# 必须只使用return

def __str__(self):

return "Hello, I am student {}, and my age is {}".format(self.name,self.age)

复制代码

在类中定义方法就类似与平常定义函数一样,只不过函数中如果需要使用本身的属性或者方法,我们便需要在函数的一个参数使用self, 并使用self.attribute调用属性以及方法,如果不需要使用,在后面下节会用提到

当我们成功的创建了一个对象之后,我们需要对这个类进行具体的实例化,创建需要的实际对象

Cyberist = Student("Cyberist","20") # 创建一个实际的对象,并且进行初始化,名称对应,类似函数的参数

name = Cyberist.getName() # 使用对象中的方法

age = Cyberist.getAge()

print(name) # Cyberist

print(age) # 20

# 当然我们也可以直接调用其属性

print(Cyberist.name) # Cyberist

print(Cyberist) # Hello, I am student Cyberist, and my age is 20

复制代码

每个人都用隐私或者不想让别人看到的东西,比如说不想让其他人知道Student的年龄,那么在Python对象编程中如何设置这些隐私呢。 在Python中我们可以使用双下划线__来定义一个私有属性,在外界不能够被访问

class Student:

def __init__(self,name):

self.__age = 20

self.name = name

def __sayHello(self):

print(self.name)

Cyberist = Student("Cyberist")

# print(Cyberist.__age ) # AttributeError: 'Student' object has no attribute '__age'

Cyberist.__sayHello() # AttributeError: 'Student' object has no attribute '__sayHello'

复制代码

但是实际上,在Python中定义的私有属性并不是严格的私有属性和私有方法,只是Python给它们换了一个名称,如果我们要访问其实也是可以访问的,只需要使用object._class_name.__attribute方式就可以了

class Student:

def __init__(self,name):

self._age = 20

self.name = name

def _sayHello(self):

print(self.name)

Cyberist = Student("Cyberist")

print(Cyberist._Student__age) # 20

Cyberist._Student__sayHello() # Cyberist

复制代码

注:其实事实上,我们应该使用单划线_来表示私有属性和方法,但是这种方法在实际运用的时候我们可以发现在类外面可以轻易的访问,就像访问普通的成员一样,就我个人而言推荐使用双划线__

在面向对象之中还存在着三个十分重要的特性:封装、继承和多态,这些特性我们将在下节中着重讲解

练习

定义一个类可以描述一个人的具体特征,并定义方法可以输出自己的相关信息。

Answer

class People:

def __init__(self,name, age):

self.name = name

self.age = age

self.favorite = None

def sayHello(self):

print("Hello, my name is {}, and my age is {} ,it is very nice to meet you here")

def __str__(self):

return "I am {}, aged {}".format(self.name,self.age)

def get_favorite(self):

self.favorite = input("Input what you like, and I can say it to you ! \n")

def say_favorite(self):

print("Hi, I know what you like, what you like is: {}, is it? xixi~".format(self.favorite))

if __name__ == '__main__':

Cyberist = People("Cyberist",20)

Cyberist.sayHello()

Cyberist.get_favorite()

Cyberist.say_favorite()

print(Cyberist)

复制代码

定义一个类描述平面上的点并提供移动点和计算到另一个点距离的方法。

Answer

from math import sqrt

class Point(object):

def __init__(self, x=0, y=0):

"""

初始化方法

"""

self.x = x

self.y = y

def move_to(self, x, y):

"""移动到指定位置

:param x: 新的横坐标

"param y: 新的纵坐标

"""

self.x = x

self.y = y

def move_by(self, dx, dy):

"""移动指定的增量

:param dx: 横坐标的增量

"param dy: 纵坐标的增量

"""

self.x += dx

self.y += dy

def distance_to(self, other):

"""计算与另一个点的距离

:param other: 另一个点

"""

dx = self.x - other.x

dy = self.y - other.y

return sqrt(dx ** 2 + dy ** 2)

def __str__(self):

return '(%s, %s)' % (str(self.x), str(self.y))

def main():

p1 = Point(3, 5)

p2 = Point()

print(p1)

print(p2)

p2.move_by(-1, 2)

print(p2)

print(p1.distance_to(p2))

if __name__ == '__main__':

main()

复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值