飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

python面向对象

时间:2022-01-18  作者:jiuyou-emperor  

一、类和对象

1、万物皆对象

2、对象:用来描述客观事物的一个实体,由一组属性方法构成

3、属性:对象具有的各种特征,每个对象的每个属性都有特定值

4、方法:对象执行的操作

5、类:对象的分类,分类就是认识对象的过程

面向对象设计的规则

1、图书类: 属性:图书编号、书名、书的作者、上架日期、借出状态

                 功能(方法):借出和归还

2、银行卡类: 属性:卡号、银行卡名称、密码、姓名、余额

     方法:登入、存款、取款

二、面向对象创建:定义某个类的对象具有的属性(变量)和方法(函数)

# 思路:
# 定义类 --> 人类
# 编写类的属性:姓名、年龄、id(身份证号)、手机号
# 编写类的方法:吃、喝、玩、睡、上班
class Person:
    # 编写属性(变量)
    name = "杨幂"
    age = 30
    gender = \'女\'

    # 我不想用指定属性,我想自己创建姓名
    def set_param(self, name):  # age、gender一样操作
        域名 = name
        print(f\'姓名:{域名}\')  
    # 如属性很多,那就很麻烦,我们可以使用 def __init__()去构造

    # 编写方法(函数),无参
    def eat(self):
        print(\'eating\')

    def drink(self):
        print(\'drinking\')

    def play(self):
        print(\'playing\')

    def sleep(self):
        print(\'sleeping\')
    
    @classmethod
    def work(self):
        print(\'working\')


# 对象的构造
YM = Person()
# 调用方法
域名p()
域名()

zs = Person()
域名param(\'张三\')

# 类访问方法,需要添加一个装饰器@classmethod
域名()
# def __init__() 去构造属性
class Person:
    def __init__(self, name, age, gender):
        域名 = name
        域名 = age
        域名er = gender

    # 编写方法(函数),有参
    def eat(self, food):
        print(f\'{域名}在吃{food}\')

    def drink(self, sthing):
        print(f\'{域名}在喝{sthing}\')

    def play(self):
        print(f\'{域名}在玩\')

    def sleep(self):
        print(f\'{域名}在睡觉\')

    def work(self):
        print(f\'{域名}正在工作\')

    def info(self):  # 输出信息
        print("该人的信息:", 域名, 域名, 域名er)


# 构造对象输出信息
lihaoran = Person(name=\'李浩然\', age=32, gender=\'男\')
# 调用方法
域名()
域名()
域名p()

三、面向对象思想:封装、继承、多态

1、封装(属性私有化)

  •  私有属性可以被查看,但是不能被修改 ---> get方法

  •  私有属性不被外界查看,但可以被外界修改 ---> set方法】

"""封装(属性私有化)"""


class Student:
    def __init__(self, name, age, xh, id, address):
        域名 = name  # 默认公共属性(允许外界读取+修改)
        域名 = age  # 默认公共属性(允许外界读取+修改)
        域名 = xh
        域名 = id  # 私有属性(不允许外界读取+修改)
        域名dress = address  # 私有属性(不允许外界读取+修改)

    # 私有属性可以被查看,但是不能被修改  ---> get方法
    def getid(self):
        return 域名

    def setaddress(self, newadress):
        域名dress = newadress

    def info(self):
        print(\'学生的基本信息:\', 域名, 域名, 域名, 域名, 域名dress)


zhangsan = Student(\'Tom\', 18, \'001\', \'340104555555555555\', \'南京\')

# 私有属性(不允许外界读取+修改),如果想查看get方法
# print(域名)  # 没有getid-->报错AttributeError: \'Student\' object has no attribute \'id\'
read_student_id = 域名d()
print(f\'查看张三id:{read_student_id}\')

域名()
域名ddress("合肥")
域名()

2、继承、多态

  •  继承在父类基础上构造出新的类,子类可以拥有继承**父类的属性和方法
  • 多态:指一个对象可以用子类的特点也可以父类的特征

 

class Animal:
    def __init__(self, name, color):
        域名 = name
        域名r = color

    def eat(self, food):
        print(f\'{域名}在吃{food}\')

    def drink(self, sthing):
        print(f\'{域名}在喝{sthing}\')

    def play(self):
        print(f\'{域名}在玩\')

    def sleep(self):
        print(f\'{域名}在睡觉\')


# 继承
class Dog(Animal):
    def __init__(self, name, color, age):
        super().__init__(name, color)  # super()调用父类对象
        域名 = age  # 属性有个性(构造属性重写)

    def kaijia(self):
        print(f"{域名}看家")


hashiqi = Dog(\'哈士奇\', \'黑白\', 6)
域名(\'骨头\')

# 多态 方法上个性(构造方法重写) 独特个性
域名ia()


class Cat(Animal):
    def __init__(self, name, color):
        super().__init__(name, color)  # super()调用父类对象


cat = Cat(\'波斯猫\', \'red\')
域名(\'鱼\')
# 域名ia() 因为猫不会看家,这是狗的独特个性

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。