python基础小知识点3(类、模块)

1.Class

在python里面,如果要生出来一个人,就得先有人类这个大概念,如果想创建一个具体的文件,就要有文件这个大概念。 用 class File 来创建一个大概念(类),注意我们通常约定类的名字要首字母大写。 然后用 my_file = File() 来创建一个具体的文件。 每个具体的个体都带有这个类的基本属性,如 create_time, name。就像每个人都会有人类这个类当中的性别,年龄一样。

class File:
    def __init__(self):
        self.name = "f1"
        self.create_time = "today"

my_file = File()
print(my_file.name)
print(my_file.create_time)

运行结果:

f1
today

有了对类的基本理解,我们再具体说明一下Python中定义类的做法。比如 self 是啥意思? self 是作为类自己的一个索引,不管你在定义类的时候,想要获取这个类的什么属性或功能,都可以通过 self 来获取。 比如这个 File 类中,获取类自己的 create_time,就写成了 self.create_time。之后在说类的功能的时候, 也是通过 self 来在类内部调用的。

__init__() 是什么呢?每当你进行一次 my_file = File() 这种操作的时候,把类给实例化的时候, File 类都会触发一次 __init__ 功能,所以这是一个功能,用于初始化一些设置

my_file.name = "new_name"
print(my_file.name)

有了这些属性,我们除了就能获取属性,也能修改属性的值。

运行结果:

new_name

Class的功能:
(1)__init__ 是类的一个功能,那么就可以像函数那样当成一个真正的功能来使用。比如在 __init__() 里加上传入参数。并且在初始化 File() 的时候传入你要 __init__ 的参数。

 

class File:
    def __init__(self, name, create_time="today"):
        self.name = name
        self.create_time = create_time

my_file = File("my_file")
print(my_file.name)
print(my_file.create_time)

 运行结果:

my_file
today

 类里面的函数定义传参的时候,参数第一个位置默认为self,其他位置的参数跟函数参数设置方法一样。

(2)继承

 比如定义文本文件和视频文件,如果分开定义两个类,我可以这样写:

 

class Video:
    def __init__(self, name, window_size=(1080, 720)):
        self.name = name
        self.window_size = window_size
        self.create_time = "today"

class Text:
    def __init__(self, name, language="zh-cn"):
        self.name = name
        self.language = language
        self.create_time = "today"

 这两种文件,其实是有共性的,比如他们都有 name,其实他们还可以抽象出一个更底层的类, 也就是文件类。这个文件类包含了属于文件所具备的共同属性和功能。 我们可以通过继承的方式,将细分类嵌入到抽象类中,减少共有属性/功能的重复开发。

 

class File:
    def __init__(self, name, create_time="today"):
        self.name = name
        self.create_time = create_time
    
    def get_info(self):
        return self.name + "  is created at  " + self.create_time

class Video(File):  # 继承了 File 的属性和功能
    def __init__(self, name, window_size=(1080, 720)):
        #super()直接定位到这个父类,调用父类的方法
        super().__init__(name=name, create_time="today") 
        self.window_size = window_size

class Text(File): # 继承了 File 的属性和功能
    def __init__(self, name, language="zh-cn"):
        #super()直接定位到这个父类,调用父类的方法
        super().__init__(name=name, create_time="today") 
        self.language = language
    
    # 也可以在子类里复用父类功能  self.get_info()
    def get_more_info(self):
        return self.get_info() + ", using language of " + self.language

v = Video("my_video")
t = Text("my_text")
print(v.get_info())     # 调用父类的功能
print(t.create_time)    # 调用父类的属性
print(t.language)       # 调用自己的属性
print(t.get_more_info()) # 调用自己加工父类的功能

运行结果:

my_video is created at today
today
zh-cn
my_text is created at today, using language of zh-cn
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值