python:面向对象编程(知识点+代码)


引言:面向对象编程时一门编程语言重要的功能,我们之前所学的 c++,java都为面向对象编程语言,这里给大家拓展一下,静态编程语言与动态编程语言;

(1)静态编程语言(编译型语言):静态类型语言是在运行前编译时检查类型。在写代码时,没声明一个变量必须指定类型。如:java,c++,C语言等等。

(2)动态类型语言(解释型语言):在运行期间检查数据的类型的语言。用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型。如:Python和ruby就是典型动态类型语言。很多脚本语言javascrīpt,javascrīpt也是这类语言。

一、类和对象

我们来创建一共Person类,看下方代码:

#定义类,这里注意类目需要首字母大写,用于缺乏其他函数
class Person:
    def __init__(self) : #这里是初始化函数,等同于c++和java里面的构造函数
        self.name="韩信"  #self.name是访问本对象的name,即为每个类里面的属性
        self.gender='男'
        self.age=20
        print("An instance created!")
    
# 代码实例化
p1=Person()  #创建p1对象
print(p1.name)
print(p1.gender)
print(p1.age)

注意:
(1)这里的初始化函数的格式为固定模式:def __init__(self):
(2)括号里面的self是相当于类里面的指针,相似c++里面的this指针,必须要写在里面,如果要在初始化函数形参里面添加其他参数时,即为在self后面加上参数名即可。

1、对象属性的默认值设置

看下面代码:

def __init__(self,name,gender='男',age=20) : 
        self.name="韩信" 
        self.gender='男'
        self.age=20
        print("An instance created!")

这里可以如果无实参的话,则按照默认值输出;

来看一段完整代码:

#定义类,这里注意类目需要首字母大写,用于区别其他函数
class Person:
    def __init__(self,name,gender='男',age=20) : 
        self.name='韩信' 
        self.gender=gender
        self.age=age
        print("An instance created!")
    def say(self):#这里需要注意,此功能为输出,则里面仍然要有self参数在里面,便于此函数下面的变量调用
        print('%s, 性别为 %s,年龄为%d。' %(self.name,self.gender,self.age))
    
# 代码实例化
p1=Person('韩信','man')
p1.say()

运行如下:
在这里插入图片描述

Person里面的若给出实参,则覆盖形参给的默认值,否则就直接输出默认值;

2、对象属性的添加、修改与删除

#定义类,这里注意类目需要首字母大写,用于区别其他函数
class Person:
    def __init__(self,name,gender='男',age=20) : 
        self.name='韩信' 
        self.gender=gender
        self.age=age
        print("An instance created!")
    def say(self):
        print('%s, 性别为 %s,年龄为%d岁,体重为%d,。' %(self.name,self.gender,self.age,self.weight))
    
# 代码实例化
p1=Person('韩信','man')
p1.age=60 #修改
p1.weight=70 #添加
p1.say()

在这里插入图片描述
这里我们并没有在初始化函数中加入参数,而是直接在实例化处通过对象来添加,修改

现在来看一下删除会显示什么效果?

# 代码实例化
p1=Person('韩信','man')
p1.weight=60
del  p1.weight
p1.say()

在这里插入图片描述
这里显示属性异常,查不到此参数。

3 、类属性

类似其他语言,在python中也有公、私有属性,那么在python语言中如何表示呢?还是publicprivate吗?
在这里插入图片描述
在这里插入图片描述
我们这里将name属性,进行私有化处理,我们在类外在此通过访问时候,即为报错(AttributeError).
大家可以看到箭头处,通过在属性名前面加上"__"(注意,这里是在英文模式两条下划线),这样子就把name属性变成私有属性,当然如果不加,则为公有属性。

二、类的继承

面向对象编程的主要好处之一是可以实现代码的重用,代码重用的方法之一就是继承。
来看个例子:

#定义类,这里注意类目需要首字母大写,用于区别其他函数
class Person:
    def __init__(self,name,gender,age) : 
        self.name=name 
        self.gender=gender
        self.age=age
    def say(self):
        print('%s, 性别为 %s,年龄为%d岁.' %(self.name,self.gender,self.age))
class Son(Person):  #格式为  ‘def 子类名(父类名):’
    def __init__(self,name,gender,age,weight) : 
        Person.__init__(self,name,gender,age)
        self.weight=weight
    def say(self):  #对代码的重写
         print('%s, 性别为 %s,年龄为 %d 岁,体重为 %d kg.' %(self.name,self.gender,self.age,self.weight))


# 代码实例化
p1=Person('韩信','男',20)
p2=Son("貂蝉","女",20,60)
p1.say()
p2.say()

在这里插入图片描述
这里需要大家知道一个知识点,不管是java或c++里面的构造函数,还是python里面的初始化函数,题目移动是创建对象时候才会调用(这个是考点)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

silence_sz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值