神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(Python面向对象的编程)

面向对象的程序设计(OOP)

对象(object): 将属性和方 法封装在一起。

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(Python面向对象的编程)_第1张图片

类(class):

具有相同的属性和方法的对象集合。

对象是类的实例

子类继承了父类的全部属性和方法, 并且也有自己特有的属性和方法。

继承描述了类之间的层次关系

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(Python面向对象的编程)_第2张图片

声明类

class 类名:

    类属性=初值

    方法(参数列表)

访问类属性

类名. 类属性

对象名.类属性

#类
class Person():
    #成员变量 类属性
    money=100000
    #成员函数 类方法
    def say_hello(self):#方法中必须有一个参数self,而且它是参数列表中的第一个参数
        #由同一个类可以生成很多个对象,每一个对象,都有一个专属的self,代表这个对象自身
        print("hello")
#创建对象
zhangsan = Person()
#访问对象类属性成员变量
print(zhangsan.money)
#这是一个动态添加的实例属性,它只属于zhangsan自己,如果重新创建其他的Person()对象,是没有这个属性的
zhangsan.major="computer"
print(zhangsan.major)
#访问类属性成员函数
zhangsan.say_hello()
Person.money=12#修改类属性,所有实例的值都会发生变化。
#删除对象
del zhangsan

构造函数:

(可以省略)

__init__(self, 参数2, 参数3, ....)

在创建对象时,用来完成初始化操作。

当创建对象时,系统会自动调用构造函数。

可以把对成员变量赋初值的语句写在构造函数中,从而保证每个变量 都有合适的初始值

析构函数:

(可以省略)

__del__( )

在清除对象时,回收和释放对象所占用的资源。

class Person:
    #在Python中,构造函数和析构函数也可以省略。
    #构造函数:在创建对象时,用来完成初始化操作。
    #当创建对象时,系统会自动调用构造函数。
    #gender="男"默认初值
    def __init__(self,name,age,gender="男"):
        self.name=name
        self.age=age
        self.gender=gender
    #析构函数:在清除对象时,回收和释放对象所占用的资源
    def __del__(self):
        print("Bye bye from",self.name)
    def printInfo(self):
        print("姓名:",self.name,"年龄:",self.age,"性别:",self.gender)

zhangsan = Person("张三",18)
lisi = Person("李四",19,"女")
zhangsan.printInfo()
lisi.printInfo
del zhangsan
del lisi

静态方法和类方法

类方法

可以通过类名或者对象调用。

不能访问实例属性,但可以访问类属性(类声明时就有的)

class 类名:

    @classmethod

    def 类方法名(cls,):

        方法体

静态方法

可以通过类名或者对象名调用,

不能访问实力属性,也不能直接访问类属性,但是可以通过类名引用类属性

class 类名:

    @staticmethod

    def 类方法名():

        方法体

公有变量和私有变量

公有变量:可以在类的外部访问

保护变量:值允许其本身和子类进行访问

私有变量:不允许在类的外部访问

__XXX:私有变量

_XXX:保护变量

__XXX__:专有变量,方法

继承:

子类能够继承父类中所有非私有的成员变量和成员函数

class 子类名(父类名)

    类属性=初值

    方法(参数列表)

class Person1():
    money=10000
    def syahello(self):
        print("hello1234567")
class Teacher(Person1):
    pass
amy = Teacher()
print(amy.money)
amy.syahello()

面向过程的程序设计(POP)

个人公众号

你可能感兴趣的:(python,python)