LIUQOQ 发表于 2021-8-30 19:45:23

python类名括号里面加float有什么用?

本帖最后由 LIUQOQ 于 2021-8-30 19:47 编辑

零基础的41节我有点不懂括号里的float具体是什么用处,
只知道怎么用但是不理解ta求解T_T

class C2F(float):
    def __new__(cls,num):
      new = num*1.8 + 32
      return print(float.__new__(cls,new))


C2F(32)

hhjdsd 发表于 2021-8-30 20:07:08

将32转化为float类型
同样的
class C2F(int):
    def __new__(cls,num):
      new = num*2 + 32
      return print(int.__new__(cls,new))

阿奇_o 发表于 2021-8-30 20:07:43

本帖最后由 阿奇_o 于 2021-8-30 20:09 编辑

int, float, str, list, dict 这些都是比较特殊的"类名", 是基本的"数据类型",
在自定义类是,class MyClass(float):就是继承float的意思,
说白点就是:我声明 我MyClass 认 float 为父!我将继承它相关的财产(属性和方法)
这样,我就可以 直接在类里调用 float.__xxx__这样的方法,或使用 super().__init__() 这样的方法,就是调用父类的方法。

ps: 所有的类都默认继承object这个总父类。

逃兵 发表于 2021-8-31 08:25:52

这个是类的继承

所谓继承,就是拥有它的一切

在定义一个C2F类的时候,继承了float的一切

所以你创建C2F实例的时候,相当于是创建了一个float

只是修改了它的new方法,使得每个实例都会变为new = num*1.8 + 32

之后在使用这个数据的时候,可以像float那样使用了

清少呐 发表于 2021-8-31 08:33:28

int, float, 是基本的"数据类型",
在自定义类是,class Floo(float):就是继承float的意思,

LIUQOQ 发表于 2021-8-31 10:50:22

清少呐 发表于 2021-8-31 08:33
int, float, 是基本的"数据类型",
在自定义类是,class Floo(float):就是继承float的意思,

继承float有什么实际作用呢?我也可以直接调用他啊

LIUQOQ 发表于 2021-8-31 10:54:28

hhjdsd 发表于 2021-8-30 20:07
将32转化为float类型
同样的

原来是把参数转化类型啊
终于懂了,谢谢{:5_105:}
页: [1]
查看完整版本: python类名括号里面加float有什么用?