Python精简入门学习(十五)

Python精简入门学习之_ init _()

-_ init _()

python自带的内置函数类 使用双下划线 包起来的[魔术方法]。
是一个初始化的方法 用来定义实例属性 和初始化数据的 在创建对象的时候自动调用 不用手动去调用。
利用传参的机制可以让我们定义功能更加强大且方便 类。

class People:
def init(self,name,sex,age): # 这里的self如同Java的this,可看作对象内部持有一个引用。
self.name = name # 这里定义了名字
self.sex = sex # 性别
self.age = age # 年龄
def eat(self,food):
'''
吃的行为
:return:
'''
print(self.name+'喜欢吃'+food)
pass
pass

xm = People()

xm.name = '小明' # 添加实例属性

xm.sex = '男'

xm.age = 11

print(xm.name,xm.sex,xm.age)

如果有n个这个对象 被实例化 那么就需要添加很多次这样的属性可 显然是比较麻烦

zs = People('张三','男',16)
print(zs.name,zs.age)
zs.eat('橘子')
ls = People('李四','女',15)
print(ls.name,ls.age)
ls.eat('菠萝')

**-self**

self只是在类中定义 实例方法的时候才有意义 在调用的时候不必传入相应的参数 而是由解释器 自动去指向。
self的名字是可以更改的 可以定义成其他的名字 只是默认的定义成self。
self 指的是类实例对象本身 相当于java的this。
_ new init 函数的区别。
_ _new
类的实例化方法 必须要返回该实例 否则对象就创建不成功。
_ _init
用来做数据属性初始化工作 也可以认为是实例的构造方法 接受类的实例 self 并对其进行构造。
_ _init
至少有一个参数 cls 代表要实例化的类 此参数在实例化时由python解释器自动提供。
_ _new
函数执行要早于 init _函数。

``````
class Person:
'''
定义类
'''
def init(self,pro,name,food): # 初始化对象
'''
:param pro:专业
:param pro:姓名
:param pro:食物
'''
self.pro = pro
self.name = name
self.food = food
print('------------init----------------')
pass
def eat(a,name,food):
'''
实例方法
:return:
'''
print('a=%s' % id(a))
print('%s喜欢吃%s专业是%s'%(a.name,a.food,a.pro))
pass
def str(self):
'''
打印对象 自定义对象 是内容格式的
:return:
'''
return '%s喜欢吃: %s 专业是: %s'%(self.name,self.food,self.pro)
def new(cls, args, *kwargs):
'''
创建对象实例方法 每调用一次 就会成成一个新的对象 cls 就是class的缩写
场景 可以控制创建对象的一些属性限定 经常用做单例模式的时候来使用
:param args:
:param kwargs:
'''
print('-----------new-------函数的执行--------')
return object.new(cls) # 在这里是真正创建对象实例
pass
pass

xw是一个实例化对象

xw = Person('数据分析','小王','香蕉')

print('xw=%s' % id(xw))

xw.eat('小王','香蕉')

print(xw) # 直接打印输出

```
个人整理好了java和python的资料可免费领取

1.JAVA资源分享:大厂面试解析+架构笔记+进阶学习PDF+精选视频资源
2.Python资源分享:python爬虫+数据分析+办公自动化+全栈开发+人工智能+面试真题分享+精选视频

全部评论

相关推荐

苗条的伊泽瑞尔最喜欢...:同28届被压力了,电科✌就不能去卷算法吗?把Java留给我们双非卷
投递快手等公司10个岗位
点赞 评论 收藏
分享
饿魔:看到在线简历了吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务