(二十四) 初遇python OOP面向对象编程-类和实例对象

各位读者大大们大家好,今天学习python的面向对象编程-类和实例对象,并记录学习过程欢迎大家一起交流分享。

新建一个python文件命名为py3_oop1.py,在这个文件中进行操作代码编写:

#面向对象编程
#类和实例对象

#定义一个Employee类
class Employee:
  pass

#实例化Employee类的对象
#emp_1 emp_2
emp_1 = Employee()
emp_2 = Employee()
#打印这两个对象:
print(emp_1)
print(emp_2)
#<__main__.Employee object at 0x00000000021C12B0>
#<__main__.Employee object at 0x00000000021C1240>
#通过打印结果可知这
#两个对象在内存中
#有不同的地址
#所以:
print(emp_1 == emp_2)#False
#给实例化的对象
#emp_1、emp_2
#实例化变量并赋值:
emp_1.first = 'T'
emp_1.last = 'Bag'
emp_1.email = 'T.Bag@email.com'
emp_1.pay = 50000

emp_2.first = 'Mc'
emp_2.last = 'User'
emp_2.email = 'Mc.User@email.com'
emp_2.pay = 60000

#打印实例变量的值
print(emp_1.email)
print(emp_2.email)
#T.Bag@emial.com
#Mc.User@emial.com
#上面实例化变量
#的方式比较麻烦、且代码编写
#过多,容易出现错误
#使用特殊的python方法
#__init__完成这件事
#相当于其他编程语言比如
#java的构造方法
#修改Employee类:
class Employee:
  #初始化修改Employee的构造方法__init__
  #self指的是类实例对象本身而不是类本身
  #Python会自动给他赋值
  #self也可以换成其他词代替,不建议这么做
  #self是类方法默认的第一个参数而且是必须的,不写会报错
  def __init__(self,first,last,pay):
    self.first = first
    self.last = last
    self.email = first + '.' + last +'@email.com'
    self.pay = pay
#实例化对象#emp_1、emp_2  
emp_1 = Employee('T','Bag',50000)
emp_2 = Employee('Mc','User',6000)
#打印email
print(emp_1.email)#T.Bag@email.com
print(emp_2.email)#Mc.User@email.com
#打印emp_1的全名
print('{} {}'.format(emp_1.first,emp_1.last))
#T Bag
#自定义一个Employee类的方法
#fullname()实现打印全名
#继续修改Employee类:
class Employee:
  #初始化修改Employee的构造方法__init__
  #self指的是类实例对象本身而不是类本身
  #Python会自动给他赋值
  #self也可以换成其他词代替,不建议这么做
  #self是类方法默认的第一个参数而且是必须的,不写会报错
  def __init__(self,first,last,pay):
    self.first = first
    self.last = last
    self.email = first + '.' + last +'@email.com'
    self.pay = pay
  def fullname(self):
    return '{} {}'.format(self.first,self.last)
emp_1 = Employee('T','Bag',50000)
emp_2 = Employee('Mc','User',6000)
#调用fullname()方法
print(emp_1.fullname())#T Bag
print(emp_2.fullname())#Mc User
#因为self代表的是类实例对象本身
#也可以这样调用fullname():
print(Employee.fullname(emp_1))#T Bag

运行结果:

<__main__.Employee object at 0x00000000027E2898>
<__main__.Employee object at 0x00000000027E2940>
False
T.Bag@email.com
Mc.User@email.com
T.Bag@email.com
Mc.User@email.com
T Bag
T Bag
Mc User
T Bag

今天初学python的面向对象编程-类和实例对象学习就到这里!

关注公号

下面的是我的公众号二维码图片,欢迎关注。

yale记公众号

本文分享自微信公众号 - yale记(python_yale_learning)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Rust语言学习交流

【Rust日报】 2019-06-25:Rust中的记忆化

有一种技术叫记忆化(memoization),可以避免函数的多次计算,从而节省资源。顾名思义,记忆化技术可以把函数的调用结果记忆下来,或者说缓存下来。

9620
来自专栏sofu456

python matplotlib、networkx图论

找不到kiwisolver模块,直接删除\Python\Lib\site-packages路径中的kiwisolver模块文件后,重新安装matplotlib,...

13930
来自专栏Rust语言学习交流

【Rust日报】 2019-05-20:经过3年零8个月的工作,WebRender将向稳定的用户发货!

对Rust感兴趣的Scala开发人员可以来看看,对比Scala和Rust的语法和思想。

10830
来自专栏Rust语言学习交流

Rust 又成为 SO 的开发者最爱语言

本次调查 Rust 得分是 83.5%,力压第二名 Python 73.1% 10 个百分点。

26430
来自专栏sofu456

vscode开发调试js、python

安装Debuger for chrome插件,点击F5,选择chrome,vscode自动生成lauch.json如下,

29630
来自专栏Rust语言学习交流

【Rust日报】 2019-06-26: DigitalBridge: 为什么我们在云渲染中使用Rust?

类似于Rust By Example的一本小书,是教你学WASM。目测内容还不够丰富,不过可以先关注。

12850
来自专栏sofu456

python学习笔记

可更改对象(mutable包含,数字、字符串、元组)和不可更改对象(immutable包含,列表、字典):引用和实体参数传递

15140
来自专栏Rust语言学习交流

【Rust日报】 2019-07-02:用Python,Go和Rust编写同一程序之后的心得

Mercurial开发人员写的一篇博客。在重写Mercurial的一些核心部分期间,他们必须为Python提供一个类似于类的接口来运行Rust代码(他们使用ru...

26130
来自专栏Rust语言学习交流

【Rust日报】 2019-05-12:Snip开源神经网络推理引擎Tract

今天有个Reddit讨论贴,有人指出每个发布到crates.io的crate都应该加上Readme说明和Repository地址(GitHub、GitLab等)...

10530
来自专栏挖数

数据可视化是鸡肋技能?啪啪打脸!

大家好,我是小团,是数据原创自媒体 “城市数据团”众多数据分析师之一,目前主要担任数据可视化的工作。

14320

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励