内置类与函数,自定义类与函数

在Python课做题中,因摸索过”类和对象“。这几天摸索中整理出以下规则,希望能够有理解的伙伴捧场~ 以下内容还在更新! 顺带说一句,明天在新疆阿勒泰地区可能又可以看得到极光,有感兴趣的伙伴同行,请留言!

类和对象

在类里面,类是为了不设置全局变量(即使全局变量可以设置很多不同的,在不同类里面分别取用)
也不在很多的函数里面反复设置变量(因在类里面的变量,如没有进行作为同一类的联络,是无法被格式化输出在函数内的,即使是在类里面call)
设置self是为了在类里面call时,能够不在函数内设置变量,而仍然能够用到类内设置的变量,而不使用全局变量。

实例化对象,和类的属性,都是不接受被调用(call)的。只有类名后面可以直接加括号,在类外输入输出。如Phone().brand 或Phone().call()等,而不能是phone().brand 或phone.brand()。
单独的call没有用,必须加上()才算是调用(call)一个函数。
因为phone 被赋值为Phone(),实际上就是phone这个变量赋予了Phone()(可以理解为函数)这个类。其他的phone1, phone2也可以被赋予成为Phone()这个类(函数)。单独的Phone(类名)的数据类型就是<class'Type'>。但Phone()相当于已经实例化了,和phone, phone1, phone2都是<class '_main_.Phone'> 这个类型。具体的值实际上是<_main_.Phone object at 0x7f6968cd0390> (会在被打印时显露出来,其中14位的“实例化对象码”会根据不同的对象(变量)有不同)。

类与对象的
名字,数据类型,值

可以从模块中导入函数,也可以从模块中导入类。

如果赋值时没有写类的括号,相当于给了类一个新的名字,旧的名字也仍然表示类。
但是,如果用同样的名字命名类的实例化对象,或者其他数据类型,那么这个变量名字所对应的数据类型就会改变。

在从模块中导入函数,或者导入类时,不需要写函数或类的括号。

类的名称,相当于一个变量,当被打印时,输出的是它的值,即 <class '_main_.name'> 这种数据类型。
而一个类的实例化对象,被print后得到值是 <class '_main_.name' at 14位数字 >。

无论是类,还是类的实例化对象,只要其名称被重新赋予了其他类型的数据,就无法被认为是之前的那种数据。
有点像,名字是x,值是y。y可以被赋予很多x名字,但一旦x被赋值成不同的y,之前的y就不在link到这个x。

而如果是类名被赋值给新变量,新变量名加()仍可被认为是实例化对象(<class '_main_.name'>)的统称,可单独使用类中的函数,方法同任何其他实例化对象,也可用于实例化其他对象。而不加()仍会被认为是类名,(<class 'type'>,value 为 <class.'_main_.类名'>)。

类的名字,类型为“类”<class 'type'>,值为<class '_main_.类名'>。
类()(实例化对象),类型为<class '_main_.类名'>,值为 <'_main_.name' object at 14 位数字>。


而对于函数,规则有些相近。
则单独的function,不带(),是function

名称的类,名称的值;名称()的类,名称()的值

分为以下四类。

1,内置的数据类型。

int, float, str, bool, tuple, list, dict 是所学的7种数据类型(4种数据类型和3种数据结构),其类就是“类型”("type")。其余的8种数据类型,其值都是<class 'bool'><class 'str'> <class 'float'> <class 'int'> <class 'tuple'> <class 'list'> <class 'dict'>。意思说,这些字符,如同变量,存储着这些类型的名称作为值,其类型是”类型“。

而int()得0,float()得0.0,str()什么都不得(但仍然被认为是class 'str'),bool()得False,tuple()得(),list()得[],dict()得{}, type #error takes 1 or 3 arguments。即这些基本数据类型加()也可以得到其类型的无实际数据的一般形式;相应的,这些一般形式的数据类型也正和这些数据类型没有加括号的数据类型一样。

2,内置的函数。

len, print, open 被称为“内含的函数或方法”型<class 'builtin_function_or_method> ,其类就是“内含的函数或方法”型。其值就是<built- in function xx(len, print, open)>。有趣的是,type的类是"type", 其值和类型的显示值是一样的,都是<class 'type'>,但其因必须有()内的输入,而被认为是函数而不是"类型"。
print()的型就是'NoneType'。print()的值就是空行,None。
print()的值是空行,None; type() #error takes 1 or 3 arguments; len() #error takes exactly 1 argument; open() #error takes 1 file position.

3,自定义的类。

如 class xx():命名的xx。其类就是"type"类。其值就是 <class '_main_.xx'> 这个类。
类()的型,'_main_name'型
类()的值:<'_main_.name' at 14位>

4,自定义的函数。

其类就是function,其值就是<function name at 14 位数字>。
而不是像builtin_function_or_method一样,是叫<built-in function name>。

函数()值:
print型:是可以print里的值,另行None;函数()的型是print里的值,另行<class 'NoneType'>。
return型:就是return的内容的值;型就是return的东西的型。

  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值