python学习之类与对象的学习
类的划分标准是:具有相同特征或行为的一类事物
对象:类里面的一个具体的实例。类名()就是一个对象
类的用法:
class ClassName:
#类的申明信息
#类体
类的说明:
类体包括类的属性和类的方法
类名:见名知意,一般用驼峰命名
创建一个对象,通过对象调用类里面的方法
类属性:就是类的里面的变量
类的方法:就是类里面的函数或方法,类的方法包括3种
类方法:用类和对象 来调用,用法:在方法的上面加一个标记@classmethod
静态方法:用类和对象来调用, 用@staticmethod 放在函数上面来标记它是一个静态方法,静态方法不需要self变量
对象方法:只能用对象访问
类的调用:
在类的外面:
类的属性的调用:
通过对象访问类里面的属性
可以用类来访问属性
# 通过对象访问类里面的属性
print('手机的品牌是:',p.brand_name)
#也可以用类来访问属性
print('手机的品牌是:',Phone.brand_name)
类的方法的调用:
#类的方法调用,通过对象.方法名() p.call()
说明:方法不能用类.方法名()调用,原因是在类里面的方法会有一个slef的参数,这个参数代表是对象,所以用对象可以调用方法可以,而类直接调用方法就不行
在类的里面调用
调用属性:self.属性名或者类名.属性名
# -*- coding: UTF-8 -*-
#@Time :2019/09/07 15:23
#@Author :wuailexiang
#@Email :3142223672@qq.com
#@File :类与对象.py
class Phone:
'''
这是一个手机类
主要功能有,打电话,发短信,看电视,听音乐
主要属性有,华为,3000,土豪金,android
'''
brand_name = '华为'
price = 3000
color = '土豪金'
os = 'android'
#功能,定义了几个方法
def call(self,name):
print('self的值是:',self)
print('我的功能是打电话,我给{}打电话'.format(name))
def massage(*arge):
print('我的功能是用来发短信的,我的短信内容是{}'.format(arge))
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 -*-
#@Time :2019/09/07 15:23
#@Author :wuailexiang
#@Email :3142223672@qq.com
#@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 -*-
#@Time :2019/09/07 15:23
#@Author :wuailexiang
#@Email :3142223672@qq.com
#@File :类与对象.py
class Phone:
'''
这是一个手机类
主要功能有,打电话,发短信,看电视,听音乐
主要属性有,华为,3000,土豪金,android
'''
brand_name = '华为'
price = 3000
color = '土豪金'
os = 'android'
#功能,定义了几个方法
def call(self,name):
print('self的值是:',self)
print('我的功能是打电话,我给{}打电话'.format(name))
def massage(*arge):
print('我的功能是用来发短信的,我的短信内容是{}'.format(arge))
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 _*_
#@Time :2019/09/07 15:23
#@Author :wuailexiang
#@Email :3142223672@qq.com
#@File :类与对象.py
class Phone:
'''
这是一个手机类
主要功能有,打电话,发短信,看电视,听音乐
主要属性有,华为,3000,土豪金,android
'''
brand_name = '华为'
price = 3000
color = '土豪金'
os = 'android'
#功能,定义了几个方法
def call(self):
print('self的值是:',self)
print('我的功能是打电话')
def massage():
print('我的功能是用来打电话的')
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
评论前必须登录!
注册