python的面向对象编程-类和对象

python的面向对象编程-类和对象,第1张

概述1.#对象的奥义在于,他本身是讲程序整合(就是把一个个功能进行分区,这样就可以任意的调用了!!)#python的类中不仅可以有定义函数和变量,也可以包括其他任何的代码!!classstudent:name="zhangsan"deffunc01(self):print("水墨画")print(123)foriin 1.# 对象的奥义在于,他本身是讲程序整合(就是把一个个功能进行分区,这样就可以任意的调用了!!)
# python的类中不仅可以有定义函数和变量,也可以包括其他任何的代码!!
class student:    name = "zhangsan"    def func01(self):        print("水墨画")    print(123)    for i in range(10):        print(i,end=" ")

# 由此可见,类体的代码在其定义的阶段就会执行(主要是除了函数和变量外的其他的代码)2.函数里面的变量要想访问函数体之外的成员变量,那么就必须加上self.变量名的形式才可以,不加self,只有变量名字只会访问局部变量,如果该局部变量没有被定义,就会报错!!!

class student:    name = "zhangsan"#类的数据类型(成员变量)    def func01(self):#self代表正在调用该函数的对象        name = "lisi"        print(name)#局部变量name,这个局部变量是不会访问def函数之外的变量的        print(self.name)#成员变量name        print(student.name)#成员变量namestudent().func01()#创建个匿名的对象!

3.构造方法,和变量的访问。

class student:    name = "zhangsan"    def __init__(self):#这是个构造方法,这种方法的优点在于可以在对象构造的时候就会立刻执行。        # self.name = "wangwu"#类变量已经有的变量会覆盖原来的变量值        self.age = 18#类变量中之前没有声明的变量,会进行创建,不过,如果这个变量的创建不是在# 构造方法里面的话,实在一个普通的实例方法的里面,那么那个对象调用这个函数,那么这个变量就会成为这个对象的私有方法    def func01(self):        print(self.name)        print(self.age)        # print(student.age)#报错,对象的数据是不会共享给类的student().func01()#通过函数访问变量print(student.name)#通过.的形式进行访问对象

# 总结:
# 1.self指代的变量是这个正在调用的对象的变量,
# 这个对象独有的变量是不会共享给类的,但是类的成员变量, 这个对象是可以访问的

所以student.nameself.name的区别在与,前者不可以访问后者的name,但是后者可以访问前者的name。
# 2.构造方法内可以存放除了对象功能的任何的代码,只要想创建对象后立即执行的都可以
# 而且构造方法可以调用类中的任何函数。构造方法的返回值是none

4.类和对象的共享关系

class student:    name = "zce"    count = 0    def __init__(self):         student.count = student.count+1#这样可以统计这个对象创建的次数# 类的数据是共享给所有的对象的stu01 = student()stu02 = student()stu03 = student()stu01.name ="kb"#只会改变stu01的namestudent.name ="ece"#即便类的变量发生改变,那么已经改变的对象的变量也不会改变print(stu01.name)#相当于self.name,名称空间作用域的问题print(stu02.name)print(stu03.name)print(student.name)

5.

class A:    x = 100 #x是友好的    def __init__(self, value1=0, value2=0):        #__init__相当于java里的构造函数        #self指的是正在调用函数的对象,相当于java里的this        self._value1 = value1    #保护成员        self.__value2 = value2   #私有成员        self.value = value1 + value2    def setValue(self, value1, value2):        self._value1 = value1        self.__value2 = value2    def show(self):        print(self._value1,self.value,self.__value2)a = A() #创建类的新实例并将此对象分配给局部变量a#构造方法中的是关键字形参,那么再给构造方法传值的时候,可传可不传a.setValue(2,5)a.show()print(a._value1)   #访问保护变量print(a._A__value2)#访问私有变量print(a.x)#访问友好类型的变量

Python中,约定:
_xxx:受保护成员;一般建议类对象和子类对象访问,不建议通过对象直接访问
__xxx__:系统定义的特殊成员;
__xxx:私有成员,只有类对象自己能访问,子类对象不能直接访问到这个成员,但在对象外部可以通过“对象名._类名__xxx”这样的特殊方式来访问。
注意:Python中不存在严格意义上的私有成员。
数据成员可以大致分为两类:属于对象的数据成员和属于类的数据成员。
属于对象的数据成员一般在构造方法__init__()中定义,当然也可以在其他成员方法中定义,在定义和在实例方法中访问数据成员时以self作为前缀,同一个类的不同对象(实例)的数据成员之间互不影响;
属于类的数据成员是该类所有对象共享的,不属于任何一个对象,在定义类时这类数据成员一般不在任何一个成员方法的定义中。
如果同样的属性名称同时出现在实例和类中,则属性查找会优先选择实例

 

总结

以上是内存溢出为你收集整理的python的面向对象编程-类和对象全部内容,希望文章能够帮你解决python的面向对象编程-类和对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: https://outofmemory.cn/langs/1185150.html

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

发表评论

登录后才能评论

评论列表(0条)

保存