美文网首页
Python3 & ⾯向对象基础二

Python3 & ⾯向对象基础二

作者: 乘风破浪的姐姐 | 来源:发表于2020-11-25 18:07 被阅读0次

一、面向对象三大特性:
1、封装:
将属性和⽅法书写到类的⾥⾯的操作即为封装
封装可以为属性和⽅法添加私有权限
2、继承:
⼦类默认继承⽗类的所有属性和⽅法
⼦类可以重写⽗类属性和⽅法
3、多态:
⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果
实现步骤:
1)定义⽗类,并提供公共⽅法
2)定义⼦类,并重写⽗类⽅法
3)传递⼦类对象给调⽤者,可以看到不同⼦类执⾏效果不同
例如:

class Animal():
    def work(self):
        print("Animal ~~~")

class Dog(Animal):
    def work(self):
        print("Dog 吃骨头~~")

class Cat(Animal):
    def work(self):
        print("Cat 吃<。)#)))≦")

class Person():
    def work_with_animal(self,obj):
        obj.work()


person = Person()
dog = Dog()
cat = Cat()
person.work_with_animal(dog)
person.work_with_animal(cat)

输出:
Dog 吃骨头~~
Cat 吃<。)#)))≦

二、类属性和实例属性
类属性就是 类对象 所拥有的属性,它被 该类的所有实例对象 所共有。
类属性可以使⽤ 类对象 或 实例对象 访问。
类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了⼀个实例属性。

class Animal():
    def work(self):
        print("Animal ~~~")

class Dog(Animal):
    def work(self):
        print("Dog 吃骨头~~")

class Cat(Animal):
    def work(self):
        print("Cat 吃<。)#)))≦")

class Person():
    name = '小花'
    def work_with_animal(self,obj):
        obj.work()


person1 = Person()
person2 = Person()
print(person1.name)#小花
print(person2.name)#小花

#修改类属性
Person.name = '大黄'
print(person1.name)#大黄
print(person2.name)#大黄

# 不能通过对象修改属性,如果这样操作,实则是创建了⼀个实例属性
person1.name = '小明'
person2.name = '小红'
print(person1.name)#小明
print(person2.name)#小红
class Person():
    name = '小花'
    def __init__(self):
        self.age = 10

    def print_age(self):
        print(f"{self.age}")
 
person1 = Person()
print(person1.age)#10
person1.print_age()#10

三、类⽅法和静态⽅法
1、类方法
1)类方法需要⽤装饰器 @classmethod 来标识其为类⽅法,对于类⽅法,第⼀个参数必须是类对象,⼀般以cls 作为第⼀个参数。
2)当⽅法中 需要使⽤类对象 (如访问私有类属性等)时,定义类⽅法。
3)类⽅法⼀般和类属性配合使⽤。
下述示例通过类方法对类属性进⾏修改:

class Person():
    tel = '15000001111'

    @classmethod
    def get_tel(cls):
        return cls.tel

    @classmethod
    def set_tel(cls,tel):
        cls.tel = tel

person = Person()
person.set_tel('15899994444') #修改类属性
print(person.get_tel()) #获取类属性 15899994444

2、静态方法
1)需要通过装饰器 @staticmethod 来进⾏修饰,静态⽅法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)。
2)静态⽅法 也能够通过 实例对象 和 类对象 去访问。
3)当⽅法中 既不需要使⽤实例对象(如实例对象,实例属性),也不需要使⽤类对象 (如类属性、类⽅法、创建实例等)时,定义静态⽅法。

class Person():
    tel = '15000001111'

    @staticmethod
    def print_tel():
        print(f"{Person.tel}")


person = Person()
# 静态⽅法既可以使⽤对象访问⼜可以使⽤类访问
person.print_tel()  #15000001111
Person.print_tel()  #15000001111

相关文章

  • Python3 & ⾯向对象基础二

    一、面向对象三大特性:1、封装:将属性和⽅法书写到类的⾥⾯的操作即为封装封装可以为属性和⽅法添加私有权限2、继承:...

  • Python3 & ⾯向对象基础一

    Python是⾯向对象的⾼级编程语⾔.在Python中“⼀切都是对象”:数字、字符串、元组、列表、字典、集合等内置...

  • Python3基础知识

    Python3基础知识 | 基础语法 Python3基础知识 | 编程第一步 Python3基础知识 | 基本数据...

  • Python入门系列(二)——基础

    此章节过一遍python3基础,方便日后回忆。目录:一、python3保留字二、python3数据类型三、基本逻辑...

  • 21.Python编程:访问权限

    前面一节重点学习了Python3中的面向对象最基础的类和对象的知识:类的定义、对象、构造方法、属性和方法等,在类中...

  • java SE目录

    java SE目录 java基础(一)java基础(二)关键字面向对象(一)面向对象(二)面向对象(三)集合(一)...

  • 新手应该如何学习python

    1、python语言基础 Python3入门,数据类型,字符串 判断/循环语句,函数,命名空间,作用域 类与对象,...

  • Python学习路线

    Python语言基础 Python3入门,数据类型,字符串 判断/循环语句,函数,命名空间,作用域 类与对象,继承...

  • Python3基础语法--文件操作

    Python3基础语法--文件操作 open() open() 方法用于打开一个文件,并返回文件对象,在对文件进行...

  • Python3 字节bytes和字符串str转换

    Python3 bytes和str互转 Python 3.6.5 bytes对象初始化 写法一 写法二 bytes...

网友评论

      本文标题:Python3 & ⾯向对象基础二

      本文链接:https://www.haomeiwen.com/subject/lebliktx.html