python类的的使用
admin
2023-06-30 20:03:59
0

首先定义一个名为Student的类

class Student:
    #__init__函数是类的构造函数,在实例化的时候做一些初始化工作
    num = 1123  #类变量
    name = 'wu'
    def __init__(self, name,age):
        self.name = name #实例变量,作用域是实例本身
        self.age = age

    def get_score(self): #类方法 
        print("score = 99")
上边这个类Student是类名类名一般要大写这个是规范。
有几个注意的点:
1. 类的属性
2. 实例化
3. 类变量与实例变量(修改类变量)
4. 类的__init__方法(也叫构造函数)
5. 类变量的作用
6. 析构函数
7. 私有属性
8. 私有方法

1.类的属性
类的属性分静态属性和动态属性,类里的实例变量和类变量都是静态属性。类里边的方法是类的动态属性。
2 . 实例化

p1 = Student("haha",20) #实例化得到p1这个对象

3 . 类变量与实例变量(修改类变量)

直接放在类里的是类变量,在__init__函数里的是实例变量
类变量相当于一个默认值, 当类变量跟实例变量是同一个变量名的时候 
对于当前这个对象来说实例变量覆盖了类变量的值,也就是说优先找实例变量,
只有在实例变量不存在的情况下才会找类变量
print(p1.num,p1.name)
这个语句输出:1123 haha
类变量有一个name 实例变量也有一个name,先找实例变量
这个时候如果修改类变量num的值
先实例化一个变量 p2 = Student("xixi",30)
p1.num = 10

print(p1.num,p1.name)
print(p2.num,p2.name)
结果:
10 haha
1123 xixi
类变量并没有改变,这里的 p1.num = 10相当于给p1这个对象定义了一个实例属性num
修改了值修改了值,并不会影响其他对象。因为它的作用域是实例本身
要是真的想修改类变量应该怎么写呢?
Student.num = 20这样就修改了类变量的值

4 . 类的init函数

类的__init__方法也叫构造函数,
什么是构造函数,是一种特殊的函数。 主要用来在创建对象时初始化对象,
即为对象成员变量赋初始值。

5.类变量的作用

定义公共属性,这样在对象实例化的时候,就不用再copy一份数据,节省内存开销。

6.析构函数

类的__del__方法是析构函数,在c和c++中没有垃圾回收机制,
所以程序员写代码时必须定义析构函数来做内存的释放工作。
而在java和python中,本身就实现了垃圾回收机制,java中由java虚拟机来回收内存,python 中则由python解释器来回收资源。
所以在python当中默认不需要定义析构函数,
Python 会提供默认析构函数。如果有特殊需要可以定义一个__del__方法
在实例对象调用结束时做一些扫尾工作。
析构函数会在对象作用域中调用结束时自动调用来释放内存,无需手动调用。
如果要显式的调用析构函数,可以使用del关键字: del obj
这里del调用其实不是直接去释放内存,而是减少引用计数,
由垃圾回收机制来回收内存

7.私有属性

类的属性分静态属性和动态属性,通常我们说类的属性通常都是指类的静态属性。
现在来说私有属性,定义类的私有属性就是属性前面加上__双下划线
私有属性在外面是不能访问的也即类的对象是不能直接调用的属性。
可以在类的内部访问并修改。
class Person:
    def __init__(self,name,age,stature):
        self.name = name
        self.age = age
        self.__stature = 1.7 #私有属性

    def get_stature(self):
        return self.__stature

p1 = Person("fransics",21,1.9)
#print(p1.__stature) 
print(p1.get_stature())
这个代码片里直接print私有属性__stature是访问不到的会报错。而可以通过类方法在内部访问并返回。

8.私有方法

前面说过了私有属性,私有方法也类似。定义的时候可以通过函数名之前加__来完成定义。同样是不能在外部访问,只能内部访问。

相关内容

热门资讯

原创 华... 华为公布了一个名叫“韬定律”的东西。说出来你可能不信,这套新玩法,要把西方称霸了60年的芯片底层逻辑...
原创 华... 在华为畅享90 Plus和90 Pro Max取得出众的市场成绩之后,有消息指出,华为畅享90系列接...
一颗流星在美国马萨诸塞州上空爆... 当地时间5月30日,一颗流星在美国东北部马萨诸塞州近海上空爆炸,并引发巨响。该州多地居民均听到爆炸声...
鸿蒙智家框架合作协议签约仪式在... 5月29日,鲁班兄弟装饰工程有限公司与华为终端有限公司在华为云南区域总部举行鸿蒙智家框架合作协议签约...
中国科学院工程热物理所在超临界... 以超临界二氧化碳(S-CO₂)为代表的新型超临界流体正以其独特优势,在制冷、发电、储能等领域拓展应用...
5月31日,“蓝月亮”上线 5月31日,农历四月十五,一轮满月将现身夜空。这轮满月有些特别,它是本月第二次满月,同时它又是本年度...
原创 华... 华为在6月份的新品越来越丰富,比如智能手机、智能手表、耳夹式耳机、新一代全屋智能等,覆盖到多场景。其...
伊朗称对霍尔木兹海峡航运实施全... 据伊朗方面当地时间5月30日消息,伊朗武装部队哈塔姆安比亚中央总部说,伊朗对霍尔木兹海峡航运实施全面...
13人遇难“致命黑车”调查:座... 5月28日凌晨,一辆载满河南邓州周边等地乘客的大通客车,从浙江杭州出发赶回邓州,经过G40沪陕高速河...
多地职校招生报名火爆 作者 | 第一财经 林靖职业教育正在成为越来越多人的“主动选择”,中职赛道不再是备选项。近日,北京中...