首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python学习之类与对象的学习

python学习值类与对象的学习

类的划分标准是:具有相同特征或行为的一类事物

对象:类里面的一个具体的实例。 类名()就是一个对象

类的用法:

class ClassName:

  #类的申明信息

  #类体

类的说明:

类体包括类的属性和类的方法

类名:见名知意,一般用驼峰命名

创建一个对象,通过对象调用类里面的方法

类属性:就是类的里面的变量

类的方法:就是类里面的函数或方法,类的方法包括3种

类方法:用类和对象   来调用,用法:在方法的上面加一个标记@classmethod

静态方法:用类和对象来调用, 用@staticmethod 放在函数上面来标记它是一个静态方法,静态方法不需要self变量

对象方法:只能用对象访问

类的调用:

在类的外面:

类的属性的调用:

通过对象访问类里面的属性

可以用类来访问属性

# 通过对象访问类里面的属性

print('手机的品牌是:',p.brand_name)

#也可以用类来访问属性

print('手机的品牌是:',Phone.brand_name)

类的方法的调用:

#类的方法调用,通过对象.方法名() p.call()

说明:方法不能用类.方法名()调用,原因是在类里面的方法会有一个slef的参数,这个参数代表是对象,所以用对象可以调用方法可以,而类直接调用方法就不行

在类的里面调用

调用属性:self.属性名或者类名.属性名

# -*- coding: UTF-8 -*-

#@File      :类与对象.py

class Phone:

  '''

  这是一个手机类

      主要功能有,打电话,发短信,看电视,听音乐

      主要属性有,华为,3000,土豪金,android

  '''

  brand_name = '华为'

  price = 3000

  color = '土豪金'

  os = 'android'

  #功能,定义了几个方法

  def call(self,name):

      print('self的值是:',self)

      print('我的功能是打电话,我给{}打电话'.format(name))

  @staticmethod

  def massage(*arge):

      print('我的功能是用来发短信的,我的短信内容是{}'.format(arge))

  @classmethod

  def watchTV(cls):

      print('我的功能是看电视的')

  def music(self,music_name='天堂'):

      print('我的功能是用来听音乐的,我听的歌曲是{}'.format(music_name))

  def calss_info(self):

      print('我的手机是{}手机,颜色是{},是{}系统,价格是{}元'.format(self.brand_name,Phone.color,Phone.os,self.price))

#调用类

p=Phone()# 调用类需要在类的后面加一个括号

#在类里面调用属性可以用self.属性名,也可以用类名.属性名

p.calss_info()

2.调用方法:

在类里面的对象方法去调用其他方法:在对象方法中调用类方法,需要self.方法名()或类名.方法名(),调用静态方法self.方法名()或类名.方法名()

在类里面的静态方法去调用其他方法:在静态方法中调用对象方法,需要类名().方法名(),调用类方法直接类名.方法名()

在类里面的类方法去调用其他方法:在类方法中调用对象方法,需要类名().方法名(),调用静态方法直接类名.方法名()

# -*- coding: UTF-8 -*-

#@File      :类与对象.py

class Phone:

  '''

  这是一个手机类

      主要功能有,打电话,发短信,看电视,听音乐

      主要属性有,华为,3000,土豪金,android

  '''

  brand_name = '华为'

  price = 3000

  color = '土豪金'

  os = 'android'

  #功能,定义了几个方法

  def call(self,name):

      print('self的值是:',self)

      print('我的功能是打电话,我给{}打电话'.format(name))

  @staticmethod

  def massage(*arge):

      Phone().call('李四')  # 在静态方法中调用对象方法

      Phone.music()  # 静态方法中调用类方法

      print('我的功能是用来发短信的,我的短信内容是{}'.format(arge))

  @classmethod

  def watchTV(cls):#类方法,在类方法中调用对象方法,需要类名().方法名(),调用静态方法直接类名.方法名()

      cls().call('李四')  # 在类方法中调用对象方法

      Phone().call('李四')  # 在类方法中调用对象方法

      cls.massage('吾爱乐享', '恭喜发财')  # 类方法中调用静态方法

      Phone.massage('吾爱乐享', '恭喜发财')  # 类方法中调用静态方法

      print('我的功能是看电视的')

  @classmethod

  def music(self,music_name='天堂'):

      print('我的功能是用来听音乐的,我听的歌曲是{}'.format(music_name))

  def calss_info(self):#对象方法

      self.call('李四')#对象方法中调用对象方法

      self.massage('吾爱乐享','恭喜发财')#对象方法中调用静态方法

      Phone.massage('吾爱乐享','恭喜发财')#对象方法中调用静态方法

      self.watchTV()#对象方法中调用类方法

      Phone.watchTV()#对象方法中调用类方法

      print('我的手机是{}手机,颜色是{},是{}系统,价格是{}元'.format(self.brand_name,Phone.color,Phone.os,self.price))

#调用类

p=Phone()# 调用类需要在类的后面加一个括号

p.calss_info()

p.watchTV()

p.massage('爱学习')

类的方法和类的函数的区别

除了对象方法必须有self,类方法必须有cls参数之外,其他的并无区别

参数类型L位置参数,默认参数,关键字参数,动态参数都有

return也支持

只能通过类与对象访问,不能直接访问

# -*- coding: utf-8 -*-

#@File      :类与对象.py

class Phone:

  '''

  这是一个手机类

      主要功能有,打电话,发短信,看电视,听音乐

      主要属性有,华为,3000,土豪金,android

  '''

  brand_name = '华为'

  price = 3000

  color = '土豪金'

  os = 'android'

  #功能,定义了几个方法

  def call(self,name):

      print('self的值是:',self)

      print('我的功能是打电话,我给{}打电话'.format(name))

  @staticmethod

  def massage(*arge):

      print('我的功能是用来发短信的,我的短信内容是{}'.format(arge))

  @classmethod

  def watchTV(cls):

      print('我的功能是看电视的')

  def music(self,music_name='天堂'):

      print('我的功能是用来听音乐的,我听的歌曲是{}'.format(music_name))

#调用类

p=Phone()# 调用类需要在类的后面加一个括号

#给类的对象传参

p.call('张三')

#默认参数

p.music()

#动态参数

p.massage('开心就好','吃饭了吗','打游戏吧')

#关键词参数关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

编写一个手机类

功能:打电话,发短信,看电视,听音乐

特征:品牌名,价格,颜色,操作系统

把上面的手机类转换成代码形式:

对象:huawei,3000,土豪金,android

方法: call(),massage(),watchTV(),music()

案例:

# _*_ coding: utf-8 _*_

#@File      :类与对象.py

class Phone:

  '''

  这是一个手机类

      主要功能有,打电话,发短信,看电视,听音乐

      主要属性有,华为,3000,土豪金,android

  '''

  brand_name = '华为'

  price = 3000

  color = '土豪金'

  os = 'android'

  #功能,定义了几个方法

  def call(self):

      print('self的值是:',self)

      print('我的功能是打电话')

  @staticmethod

  def massage():

      print('我的功能是用来打电话的')

  @classmethod

  def watchTV(cls):

      print('我的功能是看电视的')

  def music(self):

      print('我的功能是用来听音乐的')

#调用类

p=Phone()# 调用类需要在类的后面加一个括号

# 通过对象访问类里面的属性

print('手机的品牌是:',p.brand_name)

print('手机的价格为:',p.price)

print('手机的颜色是:',p.color)

print('手机的操作系统是:',p.os)

print('===========================')

#也可以用类来访问属性

print('手机的品牌是:',Phone.brand_name)

print('手机的价格为:',Phone.price)

print('手机的颜色是:',Phone.color)

print('手机的操作系统是:',Phone.os)

#类的方法调用,通过对象.方法名()

p.call()

p.massage()

p.music()

p.watchTV()

print('=======================')

#对象的值和self的值是一样的,所以self就是对象自己

print('对象的值是:',p)

p.call()

#静态方法可以用类和对象来调用

Phone.massage()

p.massage()

#类方法可以用类和对象来调用

Phone.watchTV()

p.watchTV()

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190908A0BJBV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券