Python——类(__init__初始化 、__str__ 方法的使用及面向对象和向过程的区别)

目录

1.__init__(类的初始化)

2.__str__方法 

3.面向对象和面向过程的区别


1.__init__(类的初始化)

        在Python的类中,初始化的格式是__init__(self):,方法名由init(initialize的缩写,意思是初始化),左右都是双下划线

        初始化的特殊之处是:每当进行类的实例化时,初始化方法都会被自动执行。

class Human():
  def __init__(self):
      print('我是小浪宝宝,请多指教。')

human = Human()

输出:

我是小浪宝宝,请多指教。

         初始化方法里可以完成类属性初始化得设置。比如:

class Human():
  def __init__(self):
      self.arms = 2
      self.legs = 2
      self.name = '小浪宝宝'
  def intro(self):
      print('我是小浪宝宝,请多指教。')

human = Human()
print(human.name)

输出:

小浪宝宝

        除了进行固定的初始化设置,初始化方法可以接收其他参数,进行自定义的属性初始化设置。例如下面的程序,给初始化方法添加了四个参数,在实例化时自动传入对应的变量,'小浪宝宝'赋值给self.name,两个2分别赋值给self.armsself.legs'黑色的头发'赋值给self.hair

class Human():
  def __init__(self,name,arm,leg,hair):
      self.arms = 2
      self.legs = 2
      self.hair = hair
      self.name = name
  def intro(self):
      print('我是{},我有{}'.format(self.name,self.hair))

Xiaolang = Human('小浪宝宝',2,2,'黑色的头发')
print(Xiaolang.name)
Xiaolang.intro()

输出:

小浪宝宝
我是小浪宝宝,我有黑色的头发

2.__str__方法 

        像 __init____str__ 这样的方法在Python中被成为神奇方法(或魔术方法),他们的的特征是被双下划线所包裹。

       有了 __str__() 方法,直接打印实例的结果为 __str__() 方法的返回值,因此,可以用 __str__() 方法来描述一个类。

class Human():
  def __init__(self,name,arm,leg,hair):
      self.arms = 2
      self.legs = 2
      self.hair = hair
      self.name = name
  def __str__(self):
      return ('我是{},我有{}'.format(self.name,self.hair))

Xiaolang = Human('小浪宝宝',2,2,'黑色的头发')
print(Xiaolang)

输出:

我是小浪宝宝,我有黑色的头发

         如果不加 __str__() 方法,打印实例名将输出<__main__.Human object at 0x0000025084845910> ,表示他是 Human 类的实例,object 表示它是一个对象。但是还是不知道 Xiaolang 这个实例是干什么的,可以在 Human 类里另加一个 intro() 方法,通过方法的调用(实例名.方法名())打印类的描述。

3.面向对象和面向过程的区别

        与面向对象相对应的是面向过程

面向过程把一个问题拆分成一个个步骤,然后用函数实现各个步骤,依次调用解决问题
面向对象      把一个问题拆分成各个对象,建立对象的目的不说未来完成一个步骤,而是为了描述某个事物在解决问题的步骤中的行为和特征。

比如要处理学生的成绩,将学生的姓名和成绩打印出来,用面向过程的思维可以这样写:

#1.用字典存储姓名和分数
student1 = {'name': '小浪', 'score': 96}
student2 = {'name': '小倩', 'score': 100}

#2.定义打印信息的函数
def print_infor(student):
    print('姓名: %s,分数:%d'%(student['name'],student['score']))

#3.调用打印信息的函数
print_infor(student1)
print_infor(student2)

用面向对象(使用类),可以这样写:

#1.定义学生类
class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score
    def print_infor(self):
        print('姓名:%s,分数:%d'%(self.name, self.score))

#2.实例化学生类
student1 = Student('小浪',96)
student2 = Student('小倩',100)

#调用实例的方法
student1.print_infor()
student2.print_infor()

        面向过程动作(函数)为主体,对象(上面程序里学生)作为参数传递给函数。而面向对象是以对象为主体,动作和特征分别是对象的方法属性。用代码来描述就是,面向过程动作(对象)面向对象对象.动作()

        使用面向对象的思维方式的好处是:程序的可读性、可扩展性、可维护性高。与面向过程相辅相成,分情况进行使用。

面向对象和面向过程的使用情况
面向对象面向过程
区别实物比较复杂,使用简单的线性思维无法解决事物比较简单,可以用线性的思维去解决

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python面向对象中,__str__方法是一个特殊方法,用于定义一个的实例在被打印时的字符串表示形式。通过在中定义__str__方法,我们可以自定义实例的打印输出结果。引用和给出了两个例子,分别是Human和Cat的实例在被打印时的表现形式。 在引用中,Human的__str__方法返回一个描述实例的字符串,包含了实例的姓名和头发颜色。当打印一个Human的实例Xiaolang时,会直接打印__str__方法的返回值,也就是描述实例的字符串。结果会显示为"我是小浪宝宝,我有黑色的头发"。 同样地,在引用中,Cat的__str__方法返回一个包含实例姓名和年龄的字符串。当打印一个Cat的实例tom时,也会直接打印__str__方法的返回值,结果会显示为"tom,18"。 需要注意的是,__str__方法必须返回一个字符串,否则将导致错误。在引用中,Cat的__str__方法中没有使用return语句,而是使用了print语句。这将导致__str__方法没有返回值,因此打印实例时会出错。 综上所述,__str__方法是用于定义实例在被打印时的字符串表示形式的特殊方法,在中重写该方法可以自定义实例的打印输出结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python——(__init__初始化 、__str__ 方法使用面向对象和向过程区别)](https://blog.csdn.net/m0_52162042/article/details/121068245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python魔法方法之 __str__](https://blog.csdn.net/m0_46811353/article/details/128357038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落指尖❀

您的认可是小浪宝宝最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值