python机器学习2

1.面向对象程序设计(OOP)

(1)def 函数名称(参数),创建函数的动作,并将参数代入函数中,以下设计一个函数fun2,并且在程序中调用该函数。

(2)回传值=def函数名称(参数),创建函数的动作,将参数代入函数中,并且回传数据。以下设计一个函数fun3,并且在程序中调用该函数。请注意顺序和参数的用法。

python 复制代码
def fun1():
    print("This is function1")
fun1()
def fun1():
    print("This is function1")
fun1()
def fun3(num1=0,num2=0):
    return (num1*2)+num2
print(fun3(1,2))
print(fun3(num2=1,num1=2))
print(fun3(num2=1))
a=fun3()
print(a)
def fun4():
    return 1,2
a,b=fun4()
print(a)
print(b)
def fun3(n1,n2):
    print(str(n1)+"*"+str(n2)+"="+str(n1*n2))
x=0
while x<9:
    x=x+1
    y=1
    while y<10:
        fun3(x,y)
        y=y+1

注意:fun3(2,1)同fun3(num1=2,num2=1))与fun3(num2=1,num1=2))传递过去的参数和结果都是一样的。

2.import导入和开发

import是非常重要的Python功能,除了可以导入其他第三方的函数库,还可以把本身的函数独立成另外一个文件。比如,把函数fun3放在另外一个文件MyFun.py中,以后使用时只要通过importMyFun,就能使用MyFun.fun3()函数。

python 复制代码
import MyFun
a=MyFun.fun3(1,2)
print(a)
  1. 类(class)

(1)初始化类"init"称为建构方法。在Python设置类的时候,一定要预定义"def__init__(self):"函数来处理初始化的类功能,它没有回传值。建构方法的作用是在建构对象的同时,也可以初始化一些必要的信息。

(2)如果要在初始化时带上预定义值,就需要在"init"初始化函数中把类的参数放入,如"init(self,name):"就能把name放入。

(3)类中的新增函数方法与一般函数类似,只需要在函数方法的参数中多加一个self参数。Python中所有的类成员(包含其数据成员)都是公开(public)的,成员函数的声明必须在第一个参数中使用self,以表示存在其中的对象,而此参数在调用时是不用回传的。

(4)属性是对象的静态描述,因为Python的属性默认都是公开的,所以都可以取得。在使用时需要通过self才会取得该类中的属性。

python 复制代码
class MyClass(object):
  def __init__(self):
        print("hello")
g=MyClass()

class MyClass(object):
    def __init__(self,name):
        print('hello'+str(name))
g=MyClass("Powen")


class MyClass(object):
    def __init__(self,name):
        print("hello"+str(name))
    def fun1(self):
        print("fun1")
    def fun3(self,num1=0,num2=0):
        return (num1*2)+num2
g=MyClass("Powen") 
g.fun1()
print(g.fun3(1,2))
print(g.fun3(num2=1,num1=2))

(5)在类中的数据及交互方法,统称为类成员,只要多加一个self即可,而在类中调用其他的函数方法也是通过slef来完成的

python 复制代码
class MyClass(object):
    mX=1
    mY=1
    def __init__(self,x,y):
        self.mX=x
        self.mY=y
    def fun1(self):
        s=""
        for x in range(self.mX,10,1):
            for y in range(self.mY,10,1):
                self.fun2(x,y)
    def fun2(self,x,y):
        s=str(x)+"*"+str(y)+"="+str(x*y)
        print(s)
g=MyClass(8,8)
g.fun1()
        

(6) 设置公开、私有的类函数方法

在Python的类中,所有的函数方法和属性都是公开的。如果要设置为私有,只需命名时在类函数名称前面添加两个下画线(__)即可。

python 复制代码
class MyClass(object):
    mMyPub=1
    __mMyPri=1
    def __init__(self,x,y):
        self.mMyPub=x
        self.__mMyPri=y
    def funPub(self):
        print("fun1")
    def __funPri(self):
        print("fun2")
g=MyClass(7,7)
print(g.mMyPub)
g.funPub()
        
    

(7)为了维护程序的便利性,会推荐把类独立成另外一个文件,以后使用时只要通过import调用该类即可。类的文件的名称推荐与类名称相同。

python 复制代码
from MyClass import MyClass
g=MyClass(8,8)
g.fun1()

2.继承

(1)继承是指Sub Class(子类)继承Super Class(父类)后,就会自动取得父类特性。当新增class时,把要继承的父类放在object就能完成,可以通过以下程序来了解。使用5.9节的程序,更换成调用MyClass就能够继承MyClass的类。

python 复制代码
class MyClass(object):
    def __init__(self,name):
        print("MyClass"+str(name))
    def fun1(self):
        print("MyClass->fun1")
class MyClassChild(MyClass):
    def __init__(self, name):
        print("MyClassChild"+str(name))
    def fun2(self):
        print("MyClassChild->fun2")
g=MyClassChild("powen")
g.fun1()
g.fun2()        

(2)Python也可以有多重继承,本节实例中将展示同时继承的方法:可同时拥有两个或两个以上的父类。

python 复制代码
class MyClass(object):
    def fun1(self):
        print("MyClass->fun1")
class MyClass2(object):
    def fun2(self):
        print("MyClass2->fun2")
class MyClassChild(MyClass,MyClass2):
    def __init__(self,name):
        print("MyClassChild"+str(name))
    def fun3(self):
        print("MyClassChild->fun3")
g=MyClassChild("powen")
g.fun1()
g.fun2()
g.fun3()
        

(3)Python提供调用父类函数super,但是在Python2和Python 3中的用法就不一样,方法如下:

super().fun2() #针对Python 3的调用父类函数方法

super(MyClassChild,self).fun2() #针对Python 2的调用父类函数方法

在一个程序中,Python2和Python 3如何同时运行呢?可以通过以下技巧来达到目的。try

python 复制代码
class MyClass(object):
    def fun1(self):
        print("MyClass->fun1")
    def fun2(self):
        print("MyClass2->fun2")
class MyClassChild(MyClass):
    def __init__(self,name):
        print("MyClassChild"+str(name))
    def fun2(self):
        try:
            super().fun2()
        except:
            super(MyClassChild,self).fun2()
        print("MyClassChild->fun2")
g=MyClassChild("powen")
g.fun1()
g.fun2()

本节实例将展示如何处理和调用父类的属性(Property),同样也可以调用父类函数super,如print(super(MyClassChild,self).value3)。

python 复制代码
class MyClass(object):
    value3=3
    def fun1(self):
        print("MyClass->fun1")
    def fun2(self):
        print("MyClass->fun2")
class MyClassChild(MyClass):
    value3=13
    def __init__(self,name):
        print("MyClassChild"+str(name))
    def fun2(self):
        try:
            super().fun2()
        except:
            super(MyClassChild,self).fun2()
        print("MyClassChild->fun3")
        print(self.value1)
        print(self.value2)
        print(self.value3)
#print(super(MyClassChild,self).value3)
g=MyClassChild("powen")
g.fun1()
g.fun2()

这段代码一直报错不知道怎么回事 ,有没有大神能解答一下呢

相关推荐
985小水博一枚呀25 分钟前
【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。
人工智能·python·rnn·深度学习·lstm·ntm
2401_8581205344 分钟前
Spring Boot框架下的大学生就业招聘平台
java·开发语言
转调1 小时前
每日一练:地下城游戏
开发语言·c++·算法·leetcode
Java探秘者1 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
2303_812044461 小时前
Bean,看到P188没看了与maven
java·开发语言
秋夫人1 小时前
idea 同一个项目不同模块如何设置不同的jdk版本
java·开发语言·intellij-idea
不穿格子衬衫2 小时前
常用排序算法(下)
c语言·开发语言·数据结构·算法·排序算法·八大排序
萧鼎2 小时前
Python调试技巧:高效定位与修复问题
服务器·开发语言·python
wdxylb2 小时前
使用C++的OpenSSL 库实现 AES 加密和解密文件
开发语言·c++·算法
Geek之路2 小时前
QT系统学习篇(1)
开发语言·qt·学习