Python程序设计之面向对象程序设计(1)

1.基础知识
①定义类,使用关键字class,形式如下:

#使用关键字class来定义类,格式如下
class myClass:
    def myFunction(self):
        print('This is my first class!',end='\n')
    def myFunction1(self):
        print('Hello, my class!',end='\n')

②可以通过声明类对象来调用类中的公有方法

#声明类对象
my=myClass()

#调用类函数
my.myFunction()
my.myFunction1()

#判断my是否为类对象,返回True或者False
print(isinstance(my,myClass),end='\n')

输出结果如下:

This is my first class!
Hello, my class!
True

③pass占位,在没有对类进行功能划分时使用

class myClass1:
    pass

④self(可以通过初始化修改self变量名)参数,是类方法必须带有的参数,必须放在首参数位置

class myClass2:
    money=100    #类属性(类作用域中的全局变量)
    #data=0
    def __init__(myclass,a):    #类的构造函数,初始化类对象时调用
        myclass.a=a
    def myFunction3(myclass,b):
        print(myclass.a+b,end=' ')
        print('money:',myclass.money,end='\n')
    def __call__(myclass, c):
        print(myclass.a*c,end='\n')
    def myFunction4(myclass,d):
        myclass.data=d
        print(myclass.money,myclass.data,end='\n')
#初始化类对象
my1=myClass2(5)
#调用类函数
my1.myFunction3(5)
#调用__call__()函数
my1(5)

#修改类中属性
my1.money=1000
my1.myFunction3(6)

#增加类属性
my1.name="myClass2"
print(my1.name,end='\n')

#增加对象的成员
my1.myFunction4('hello')

输出结果如下:

10 money: 100
25
11 money: 1000
myClass2
1000 hello

2.方法指与特定实例绑定的函数,通过对象调用方法时,对象本真作为第一个参数传递过去,普通函数不具备这个特性

my2=myClass1()
def test(self,m):
    self.value=m
my2.test=test
print(my2.test,end='\n')
print(my2.test(my2,2),my2.value,end='\n')

输出结果如下:

<function test at 0x000001E57E1AC168>
None 2

3.在IDE中,通过在对象或类名后加’.‘可以查看其所有公有成员;加’._'会列出该对象或类的所有成员,包括私有成员;
私有属性:使用__两个下划线(中间无空组合)开头则为私有属性

class myClass4:
    def __init__(self):
        self.m=10
    #m=10 #公有属性
    _m=100  #保护属性
    __m__=1000  #系统定义的特殊成员
    __m=10000 #类中私有成员,只能内部访问或者在外部使用特殊函数
    def myFunction(self):       #类方法
        return self.__m
        #print(self.__m,end='\n')
        #print(self._m,end='\n')
    def staticFunction():       #静态方法
        print(myClass4.m)
    def __myFuction(self):
        print(self.myFunction())    #私有函数
    def myFunction5(self):
        return self.__myFuction()   #内部函数访问私有函数

调用类:

my3=myClass4()
print('打印公有属性',my3.m,end='\n')
print('打印私有成员(外部访问)',my3._myClass4__m,end='\n')
print('使用内部函数访问私有成员',my3.myFunction(),end='\n')
print('通过内部访问私有函数',my3.myFunction5(),end='\n')
print('通过类名访问方法',myClass4.myFunction(my3),end='\n')

输出结果:

打印公有属性 10
打印私有成员(外部访问) 10000
使用内部函数访问私有成员 10000
10000
通过内部访问私有函数 None
通过类名访问方法 10000

学习笔记:
1关于类的定义和使用,使用关键字class(空格)(类名):的格式定义,类可以有初始化函数__init__()也可由不使用;
2.可以通过isinstance()函数判断对象实例化关系;
3.通过pass占位符可以使得调用没有方法的类也可以被实例化:

#pass占位,在没有对类进行功能划分是使用
class myClass1:
    pass
myc=myClass1()
print(myc,end='\n')

输出结果:

<__main__.myClass1 object at 0x000002BE48EBA0C8>

4.对于类中的方法的首个参函名在初始化使用时可以被修改:

def __init__(myclass,a):    #类的构造函数,初始化类对象时调用
    myclass.a=a

5.方法指与特定实例绑定的函数,通过对象调用方法时,对象本真作为第一个参数传递过去,普通函数不具备这个特性;
6.在IDE中,通过在对象或类名后加’.‘可以查看其所有公有成员;加’._'会列出该对象或类的所有成员,包括私有成员。私有属性:使用__两个下划线(中间无空组合)开头则为私有属性。

如果有不会的,可以留言,大家一起学习交流!

发布了78 篇原创文章 · 获赞 83 · 访问量 5414

猜你喜欢

转载自blog.csdn.net/qxyloveyy/article/details/104554448