面向对象的介绍

  1.对象

万物皆对象,包括人、猫、狗、汽车等,处理为属性和行为。对象具有属性也称为状态和变量,如每个人的名字、年龄、身高、体重等属性,每个对象的属性值不同。对象还具有行为,也称作方法,如每个人要吃饭、睡觉、打豆豆,每个对象的行为也不相同。

  2.类

类是相同类似对象的统称,人就是一种类,每个人——即人这类对象。类是对象的抽象,对象则是类的实例化、具体化,每个对象都包括了类中定义的属性和行为。

  3.面向对象

3.1面向对象的基本特征

面向对象的三大特性:封装性、继承性和多态性

类:用来描述具有相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:在整个实例化的对象中是公用的。类变量定义在类中,且在函数体之外,常不作为实例变量使用。

数据成员:类变量或者实例变量。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其改写,此过程叫覆盖,也称为方法的重写。

实例变量:定义在方法中的变量,只作用于当前实例的类。

继承:指一个派生类和继承基类的字段和方法。

实例化:创建一个类的实例,一个类的具体对象。

方法:类中定义的函数。

对象:通过类定义的数据结构实例。包括两个数据成员(类变量和实例变量)和方法。

3.2定义语法

用class关键字来声明一个类

class 类名:

   语法块

class EmptyClass:
    pass

3.3类的使用

class EmptyClass:
    pass
empty=EmptyClass()
print(type(empty))

运行结果:<class 'type'>

3.4类的构造方法

class Dog:
    def _init_(self):
        print("1")

        
dog=Dog()

1

3.5类的属性

构造方法时可初始化一些属性

class Dog:
    def _init_(self,name):
        self.name=name
        self.age=3
dig=Dog("旺财")
print(dog.name)
print(dog.age)

旺财

3

3.6类中的方法

class Dog:
    def __init__(self,name):
        self.name=name
    def play(self):
        print("旺财",self.name)

    
dog=Dog("旺财")
dog.play()

旺财 旺财

3.7私有属性

    def set_age(self, age):
        if not isinstance(age, int):
            print("输入的年龄必须是数字!")
            return False
        if age <= 0:
            print("年龄必须大于0!")
            return False
        self.__age = age

    def play(self):
        print("我今年", self.__age)
dog=Dog("旺财")
dog.set_age("hello")
dog.set_age("-20")
dog.set_age(3)
dog.play()

旺财 生成成功
输入的年龄必须是数字!
输入的年龄必须是数字!
我今年 3
旺财 生成成功

3.8私有方法

class Dog():
    def __say(self,name):
        print(name)
    def play(self):
        self.__say("汪汪汪")
dog=Dog()
dog.play()
#错误
dog.__say

AttributeError: 'Dog' object has no attribute '__say'

4.继承和多态

继承:对一种类进行层级划分的概念。增加新的类,不仅可以继承新的属性和方法,还可以增加新的。

class Animal:
    def __init__(self,name):
        self.name=name
    def play(self):
        print("我是",self.name)
class Dog(Animal):
    pass
dog=Dog("旺财")
dog.play()

我是 旺财

注意:子类不能继承父类的私有方法,也不能调用父类的私有方法。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

判断一个实例是不是某个对象可以使用isinstance函数

class Animal:
    def say(self):
        print("Aniaml")
#继承
class Dog(Animal):
    def say(self):
        print("Dog")
#继承
class Cat(Animal):
    def say(self):
        print("Cat")
dog=Dog()
cat=Cat()
print(isinstance(dog,Dog))
print(isinstance(dog,Animal))
print(isinstance(cat,Cat))
print(isinstance(cat,Animal))

True
True
True
True

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值