Python编程基础-类与对象-1

敲黑板,本章内容属于重要内容

1.面向对象

面向对象是一种编程思想,是将现实世界中的事物抽象为计算机世界中信息的方法。

举个栗子:

现实世界的人,有属性,性别、年龄、身高、体重、会两条腿走路、吃饭、如厕...等等。

我们要管理上亿人口,怎么办?人就是一个类,有性别,年龄,还有重要的身份编码等等。具体的你,我,它,张三,王五,赵六就是“对象”,他们是“人”这个类的具体个体,也叫“实例”。

再举个栗子:狗狗

 2.定义类

 Python中的数据类型都是类,当然,类也可以我们自己定义。

语法:

class 类名(父类):

        #类体

命名的类继承父类, 让我们想一下狗狗这个类,它们有名字,还有年龄,大多数能做出蹲下和打滚的行为,考虑name和age两种属性,还有sit和roll_over两种行为:

#创建狗狗这个类
class Dog():
    def __init__(self,name,age): #int前后都有两个下划线
        #初始化name和age
        self.name = name
        self.age = age
        
    def sit(self):
        #小狗蹲下
        print( "{}在蹲下.".format(self.name))  #通过"对象.实例变量"形式访问

    def roll_over(self):
        #小狗打滚
        print("{}在打滚.".format(self.name) )      

d = Dog("蛋蛋",3)
print("{0}是我们家的成员,它{1}岁了。".format(d.name,d.age))
d.sit()
d.roll_over()  #调用"对象.实例方法"形式,无需传递参数

运行结果自己可以运行下看看。

(1)__int__()

类中的函数称为方法,__int__()是一个特殊的方法,用来初始化实例变量,每当创建Dog类的实例时,都要给两个形参赋值(name和age)。

以self为前缀的变量都可供类中所有方法使用,self.name = name

实例方法与实例变量一样,都是实例特有的方法。

(2)类变量

类变量是属于类的变量,不属于单个对象。就是说名字和年龄所有狗狗都有,但狗狗的名字和年龄都不一样,而蹲下和打滚这两个行为都是一样的,或者吃饭这个行为也都一样,吃饭就是实例共享的变量,它属于类,被称为“类变量”。而名字和年龄属于实例变量。

#创建狗狗这个类
class Dog():
    eat = "在吃饭"  #类变量eat
    def __init__(self,name,age): #int前后都有两个下划线
        #初始化name和age
        self.name = name  #创建和初始化实例变量
        self.age = age     #创建和初始化实例变量
        
    def sit(self):
        #小狗蹲下
        print( "{}在蹲下.".format(self.name))#通过"对象.实例变量"形式访问

    def roll_over(self):
        #小狗打滚
        print("{}在打滚.".format(self.name) )      

d = Dog("蛋蛋",3)
print("{0}是我们家的成员,它{1}岁了。".format(d.name,d.age))
d.sit() #实例变量通过"对象.实例变量"形式访问
d.roll_over()
print("{0}{1}".format(d.name,Dog.eat))    #类变量通过"类名.类变量"形式访问

运行结果:

===== RESTART: C:/Users/Python/Python39/10.Dog类.py =======================
蛋蛋是我们家的成员,它3岁了。
蛋蛋在蹲下.
蛋蛋在打滚.
蛋蛋在吃饭

(3)类方法

类方法与类变量类似,属于类,不属于个体实例。在定义类方法时,它的第1个参数不是self,而是类本身。

@classmethod   #定义类方法需要装饰器,装饰器以@开头

def  <方法名>(cls,<参数>):#cls代表类自身,即class类名

        return cls.<方法名> * <参数>

调用时,可以使用类替换    cls.<方法名>*<参数>    可以用   <类名>.<方法名>*<参数>替换。

这部分已经有点不好理解了,需要结合应用场景,最重要的还是多练,练中加深理解。

有空再介绍面向对象的重要特性,分别是封装性、继承性、多态性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值