类型都有自己的特点!
Python中类型,一旦定义,就会自动添加特有的一些属性和行为,是从python定义的基础类型继承过来的!
面向对象:一切皆对象-> python中所有的东西都是由一个超级原始对象衍生出来的!
自己定义的类型~都会继承原始的这个对象~继承该对象的属性和行为
object – type
自定义类型,继承的[双下划綫开头和结尾的属性和函数]:魔法属性、魔法方法
魔法属性/方法:已经具备了一定功能的固有的属性和方法!
(1)]常见魔法属性和方法
输出:__str__():输出当前对象在内存中的地址十六进制表示字符串!
__repr__(): 用于在交互模式下,直接操作变量时~获取变量数据的定义!
比较:__gt__():grant than大于
__lt__(): less than小于
__ge__(): grant or equals大于或者等于
__le__(): less or equals小于或者等于
__ne__(): not equals 不等于
__eq__(): equals 等于
运算:__add__():加法
__sub__():减法
__mul__():乘法
__truediv__():除法
__floordiv__():整除
用户类型->创建多个对象-> 存放到一个集合中
[账号、密码、昵称]-> 需求认为:用户对象需要存放到一个集合中,不能存放重复账号的用户~如果账号相同~不能重复!
定义一个用户类型[User]
创建5个用户对象->2个用户对象和其他账号重复了-> 存放到一个集合中
集合中不能存放重复账号的对象->结果:集合中只有三个用户对象!
集合:可以存放多个数据,但是不能重复[哈希算法进行比较]
对象:对象不是基础类型,不能直接操作~重写哈希算法和比较函数
__hash__() __eq__()
实现:对象在集合中的剔重!
有一个列表中,包含了大量的数字数据,如果要剔除列表中的重复数字?
nums = [1,2,3,2,3,3,2,4,5,6,7,5,4,6,8,8,98,6,5]
nums_set = set(nums)
nums = list(nums_set)
面向对象:类型中公共的属性和方法
类:类型、数据类型、通过class关键字自定义的类型
通过类型创建对象,对象中包含了我们需要的属性数据和操作方法
该类型创建的所有对象,互相都是独立的!
但是:总有一些数据,是该类型所有的对象公共的!如~所有人都有一个最大年龄!
面向对象中~类型中提供了这样的操作:用于给所的对象提供公共的属性和操作方法
(1)公共属性:类属性
声明在类型的内部,方法的外部的属性!
普通属性:声明在方法中,通过self声明的~成员属性,是每个对象特有的!
(2)类型中的方法
成员方法/实例方法:就是属于类型的普通方法
def 方法名称(self, ..):
成员方法,必须通过对象.成员方法() 调用!
类方法:属于当前类型的方法,可以通过类型、该类型的对象进行调用
@classmethod
def 类方法(cls, ..):
类方法:使用较少~特殊需求~在方法中要对当前类型进行操作:考虑使用类方法
静态方法:类型中的函数
可以被所有的对象、包括类型名称,进行调用
参数声明和普通函数没有任何区别!
@staticmethod
def 静态方法(..):
网友评论