Python学习笔记——6、面向对象编程OOP

Python学习笔记——6、面向对象编程OOP,第1张


一、对象的定义

        主要是对对象的一个理解,可以理解为一个模板,也可以理解为一个表单,都可以,一旦调用,就相当于填写了一份独一无二的表单或者模型就变成了一个个独立的个体。


class Dog:

    # Class Attribute
    species = 'mammal'

    # Initializer / Instance Attributes
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # instance method
    def description(self):
        return "{} is {} years old".format(self.name, self.age)

    # instance method
    def speak(self, sound):
        return "{} says {}".format(self.name, sound)

        1)构造函数的定义        

        def  __init__(self,parameter):

                pass

        构造函数最主要功能是,在进行实例化时,相当于一个给其中的一些变量给默认的值,而不是空的。


        2)其他函数或者过程代码,只需要按照外面正常的方法定义即可,但是必须有self这个种子,相当于是这个实例的指针,可以通过 class_name.function(parameter)进行调用。


        3)对象的实例化

        a  = class_name(parameter),此处的parameter是构造函数中的参数传递。


补充:print的格式化输出

print("{} is {} and {} is {}.".format(philo.name, philo.age, mikey.name, mikey.age))

#{}表示输出位置,format进行了格式化输出


二、对象内函数变量的定义

        进行对象内函数定义的时候,如果是想在一个class内定义一个都可以使用的变量,那就需要加上self,例如:self.parameter = '666'。


        假如是进行函数定义时的参数传递,那就不需要使用self,那个参数一般是在外面进行实例化调用才会使用。



三、父类和子类的继承与重构

        1)继承

class Person:   # 定义一个父类
    pass

class Chenese(Person):
    pass

        假如父类未进行构造函数定义,则不会影响子类的构造函数,假如父类进行了重构,则子类至少应该先继承,再重构。


        2)构造函数的重构

class Animal:
    def __init__(self,G,W,name = 'none'):
        self.name_animal = name
        self.gender_animal = G
        self.weight_animal = W

    def sepcies(self):
        self.species = animal

    def gender(self,G):
        self.gender_animal = G
    
    def weight(self,W):
        self.weight_animal = W
    
    def inform(self):
        print('name is ',self.name_animal)
        print('gender is ',self.gender_animal)
        print('weight is ',self.weight_animal)

class Cat(Animal):
    def __init__(self,specie,G,W,name = 'none'):   #先继承父类的构造函数,然后再进行重构
        Animal.__init__(self,G,W,name)
        self.cat_species = specie

    def name_cat(self):
        print(self.name_animal)            #子类中可直接调用或者使用父类的函数或者属性变量

        3)特别注意

        (1)子类对父类的构造函数必须先继承,再重构,假如不需要重构,那么在实例化时候,按照原来父类进行实例化就可以。


class Dog(Animal):
    
    def name_dog(self):
        print(self.name_animal)

dog1 = Dog('female',66,'wangwangwang')
dog1.name_dog()

        (2)无论是构造函数重构,还是类内的普通函数定义,必须要有self参数。


类内的变量定义、修改与使用也一般是self.parameter = ' ',但是函数的参数传递则一般没有self。


        (3)子类对父类的重新定义则与新定义保持一致。


也就是所谓的覆盖功能。


        (4)isinstance()函数用于确定实例是否也是某个父类的实例。


                

isinstance(实例,父类)    #判断实例的父类是否包括所给出的父类

#此处前面必须是实例,后面是类,决不能出现两个都是实例,否则会报错

        (5)定义新类时,Python 3隐式使用object作为父类。


        即class father(object):  = class father():

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/568786.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-09
下一篇2022-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存