Python_2函数、类、对象

# Python中的函数定义
# def sum():
#     print('123')
# sum()

# 参数类型:必传参数、关键字参数、缺省参数、万能参数。
# 必传参数:形参和实参的个数必须保持一致,不一致就会出现异常。
def sum(age, name):
    print(age, name)
sum(20, '张三')

def sum1(age, is_male=False, name=None):
    # is_male和name称为缺省参数:这两个参数可以传实参,也可以不传实参。相当于这两个参数有默认值。
    print(age, is_male, name)

sum1(40)
sum1(50, True, '张三')
# 关键字参数
sum1(age=10, name='张三')

def sum2(*args, **kwargs):
    # *args(元组)和**kwargs(字典)就是万能参数:可以传递任意参数,这两个形参都能接收
    print('args = ', args)
    print('kwargs = ', kwargs)

sum2(1, 2, 3)
sum2(name='张三', age=20, is_male=False)
sum2(1, 2, name='1', age=222)

# 函数内部返回值
def sum3():
    # 可以返回多个值
    return '123', 20, True
result = sum3()
print(type(result))
print(result)

# 局部变量和全局变量
# 局部变量:函数内部声明的变量是局部变量,局部变量的作用域是只能在当前函数内部使用,在函数执行完毕之后,这些局部变量所占用的内存空间会被系统回收,那么局部变量就不能使用了。
# 全局变量:在函数外部声明的变量一般称为全局变量,全局变量的作用域是整个.py文件都可以使用,在程序执行完毕之后,全局变量占用内存会被系统回收。


#
# def show():
#     # u_name和u_age就是局部变量。
#     u_name = '1'
#     u_age = 20
#     print(u_name, u_age)
#
# print(u_name)

u_name = 'a' # 全局变量
def show():
    # 如果在函数内部,只是引用这个全局变量的值,直接引用即可。
    # print(u_name)
    # res = '姓名是:' + u_name
    # print(res)

    # 如果需要在函数内部,修改这个全局变量u_name的值,需要使用global关键字声明
    global u_name
    u_name = 'abc'

show()
print(u_name)
# 类和对象
# 类:主要是将函数(方法)和变量(属性)封装到一个类中,方便引用和管理。
# 对象:它是类的实例,主要负责调用类中封装的属性和方法。

# 知识点:
# 1. self和super关键字的区别;
# 2. 一些内置的装饰器: @property、@classmethod、@staticmethod;
# 3. 指针和内存地址之间的关系;
# 4. 类中私有变量的设置;
# 5. 类的继承的作用、特点及使用;
# 6. 类中方法的重写;
# 7. 类的多继承;

# object是Python中类的根类、最底层的类,所有的类都最终继承于object类;
class People(object):
    """
    自定义类的描述
    """
    # 类属性
    name = '123'

    def __init__(self, u_name, u_age):
        """
        该方法就是对象的初始化方法,当对象被创建完成之后,会自动调用这个方法,用于给对象初始化一些属性。对象的创建使用的__new__(self)方法,该方法会给对象开辟内存空间。
        self: 表示当前类的对象,类似于this。

        当创建一个People对象p1,那么程序就会将类中的属性拷贝到对象p1的内存中;
        当创建一个People对象p2,那么程序就会将类中的属性拷贝到对象p2的内存中;

        所以,当p1对象去调用这些属性和方法的时候,self指的就是p1对象;
        所以,当p2对象去调用这些属性和方法的时候,self指的就是p2对象;

        总结:哪一个对象在调用类中的方法和属性,self指的就是这个对象;
        """
        # 给对象初始化属性,__init__()中的属性称为对象属性或者实例属性,这些属性主要就是用来保存数据的。而这些被保存的数据是放在对象的内存空间中的。
        self.u_name = u_name
        self.u_age = u_age

    def add_student(self):
        print('self = ', self)
        # self不需要我们给它传递实参,self的实参是由Python解释器传递的。自定义的参数可以写在self的后面。
        print(self.u_age, self.u_name)

    @classmethod
    def update_student(cls, number):
        print('----', cls, number)


p1 = People('张三1', 20)
print('p1 = ', p1.u_age)
p1.add_student()
p1.update_student(100)

p2 = People('张三2', 20)
print('p2 = ', p2.u_age)
p2.add_student()
p2.update_student(200)

# 类属性:所有的对象公有的属性,如果其中一个对象修改了类属性的值,其它对象也会受到影响。类属性既可以使用类名Poeple调用,也可以使用对象p1/p2调用。
# 对象属性:所有的对象都拥有自己的属性,放在自己的内存空间中,修改实例属性的值只对自己产生影响,不会对别的对象的属性产生影响。对象属性(实例属性)只能由实例对象调用,不能使用类名People调用。
print(People.name, p1.name, p2.name)

# 静态方法:
# 类方法@classmethod def replceSpace(cls):类方法既可以使用类名Poeple调用,也可以使用对象p1/p2调用。
# 对象方法(实例方法)def insert(self):对象方法(实例方法)只能由实例对象调用,不能使用类名People调用。

# 工具类()/数据操作类
class DBTool(object):
    """
    处理数据库的工具类
    """
    # @classmethod:装饰器
    @classmethod
    def insert(cls):
        # cls指代的是当前类People,不能再使用self了。
        pass

    @classmethod
    def update(cls):
        pass

class StrTool(object):
    """
    处理字符串的工具类
    """

    @classmethod
    def removeSpace(cls):
        pass

    @classmethod
    def replceSpace(cls):
        pass

# db = DBTool() # 占用内存
# s = StrTool() # 占用内存

DBTool.insert()
DBTool.update()

# 练习:学员管理系统 将数据保存到本地数据库中进行持久化(sqlite3)
# 要求:
#     1. 一个工具类,主要封装数据库中表的增删该查方法;
#     2. 一个数据类,主要封装和数据相关的方法和属性;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告型管理界面,管理员在公告型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值