山东大学Python(6)——模块

#%%
# 使用 jupyter notebook 编写
"""
本章知识目录:
    1.import搜索的路径顺序 
    2.Python的封装性
    3.Python继承
    4.Python多态
"""

"""
考试:
模块的划分、之间的关系
模块导入的方式
import模块时,Python做了什么(了解)
搜索路径顺序
类的初始化的方法(成员的定义)
成员的使用(访问私有变量)
类的继承(子类和父类的关系,初始化的3个情况)
多态(不考,但非常重要)
"""

#%%

"""
import搜索的路径顺序:
    1.程序的主目录
    2.PYTHONPATH(环境变量)目录
    3.标准链接库目录
    4.任何.pth文件的内容
这四个组合起来构成了sys.path,其保存了模块搜索路径在机器上的实际配置
搜索路径1(安装目录)和2(\Python\Python35\Lib\site-packages)是系统自定义的,
而2和3可以用于拓展路径,从而加入自己的源代码目录

"""
import sys
print(sys.path)
import site 
site.getsitepackages() # 获得包文件的位置

#%%

"""
Python的封装性:
    Python的语言风格没有特别强调封装性。
    它主张程序员自己通过更加严谨的方式组织程序以避免出错,
    而不是通过在语言层面实现封装达到这一点
    但是,在Python中仍然可以实现对象的(非严格意义上的)封装

"""
class Student():
    def __init__(self, age, sex):
        self.__age = age # 在属性或者方法名称前加2个下划线,表示私有化
        self.__sex = sex
LTL = Student(19, 'Man')
#print(LTL.__age) # 这是会报错的
print(LTL._Student__age) # 这是可以的,通过 _类名+私有变量

#%%

"""
Python继承:
    1.子类中的__int__()方法 (以下三点总结了所有的情况)
        如果子类没有定义自己的初始化函数,父类的初始化函数会被默认调用;但是如果要实例化子类的对象,则只能传入父类的初始化函数对应的参数,否则会出错。
        如果子类定义了自己的初始化函数,而在子类中没有显式调用父类的初始化函数,则父类的属性不会被初始化
        如果子类定义了自己的初始化函数,在子类中显式调用父类,子类和父类的属性都会被初始化

"""

# 子类没有定义自己的初始化函数
class Parent(object):
    def __init__(self, name):
        self.name = name
        print("create an instance of:", self.__class__.__name__)
        print("name attribute is:" , self.name)
class Child(Parent):
    pass
#c = Child() # 这样是不行的,会报错
c = Child("son") # 这样是可以的

print('=============================')

# 子类定义了自己的初始化函数,但没有显式调用父类构造函数
class Girl(Parent):
     def __init__(self):
        print("call __init__ from Child class")
c = Girl() # 可以,但父类的属性没有初始化
#print(c.name) # 会报错

print('=============================')

# 子类定义了自己的初始化函数,而且显式调用了父类构造函数
# 这个super放在__init__()中的哪里都行,哪怕在__init__()中有多个都行
class Child(Parent):
    def __init__(self, sex):
        #super(Child, self).__init__("data from Child") 
        self.sex = sex  
        #super(Child, self).__init__("data from Child") 
    #def sd(self):
        #super(Child, self).__init__("data from Child")
c = Child('Man')
#c.sd() # 这可以,不过在创建对象时不会初始化


#%%

# Python多态:
class A():
    def fa(self):
        print('from A')
    def test(self):
        self.fa()
class B(A):
    def fa(self):
        print('from B')
b = B() 
b.test() # 子类会覆盖父类的方法

#%%

class A():
    def __fa(self): # 父类将方法定义为私有
        print('from A')
    def test(self):
        self.__fa()
class B(A):
    def __fa(self):
        print('from B') 
    #def _A__fa(self):
        #print("Yes") # 但如过加上这个方法,那么下面的b.test()会调用此方法,输出Yes
b = B() 
b.test() # 子类方法不能覆盖父类方法
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,sort_index()函数是pandas库中DataFrame数据对象的一个方法,用于根据行标签和列名称对数据进行排序。函数的语法如下:sort_index(axis=0, level=None, ascending=True, inplace=False, kind="quicksort", na_position="last", sort_remaining=True, ignore_index=False)。\[1\] 另外,pandas的DataFrame数据对象还有另一种排序方式,即根据指定某一列的值进行排序,这可以通过sort_values()函数实现。\[2\] 需要注意的是,sort_index()函数是根据行标签和列名称进行排序,而sort_values()函数是根据某一列的值进行排序。 除了pandas库中的排序函数,还可以使用其他排序算法,比如冒泡排序和选择排序。冒泡排序是一种简单的排序算法,它通过比较相邻元素的大小并交换位置来实现排序。\[3\]选择排序是另一种常见的排序算法,它通过每次选择最小的元素并将其放置在已排序部分的末尾来实现排序。 希望以上信息对您有所帮助! #### 引用[.reference_title] - *1* *2* [python函数sort_index 和 sort_values排序](https://blog.csdn.net/lss1990lss/article/details/119559207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [蓝桥杯python组————笔记整理](https://blog.csdn.net/qq_46639904/article/details/124023255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值