概述
参考链接: 11周精通python计划(完结)
总结说明:
# 演示方法的使用
# 方法是类内部定义的函数
# 1.实例方法, 实例对象的方法,由各实例对象独享,最常用的形式
# 2.类方法,类对象的方法, 由所有实例对象共享
# 3.自由方法,类中的一个普通函数,由类所在命名空间管理,类对象独享
# 4.静态方法,类中的一个普通函数,由类对象和实例对象所共享
# 5.保留方法,由双下划线开始和结束,保留使用,如__len__()
1.实例方法,实例对象的方法,由各实例对象独享,最常用的形式:
使用实例方法,演示文档字符串的使用,类属性的使用,构造函数和析构函数的使用
# 演示方法的使用
# 方法是类内部定义的函数
# 1.实例方法, 实例对象的方法,由各实例对象独享,最常用的形式
# 2.类方法,类对象的方法, 由所有实例对象共享
# 3.自由方法,类中的一个普通函数,由类所在命名空间管理,类对象独享
# 4.静态方法,类中的一个普通函数,由类对象和实例对象所共享
# 5.保留方法,由双下划线开始和结束,保留使用,如__len__()
class Friend(object):
"""自定义的类用来对现实世界中的朋友进行建模""" # 设置文档字符串docstring
count = 0 # 定义类属性,并赋初值
num_friends = 1000 # 定义类属性,并赋初值
print('开始加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
def __init__(self, name, age):
'''初始化属性name和age'''
self.name = name # 定义实例属性,并赋初值
self.age = age # 定义实例属性,并赋初值
Friend.count += 1 # 通过类型名来访问类属性
Friend.num_friends += 1 # 通过类型名来访问类属性
def introduce(self):
''' 用于实例的自我介绍 '''
print('我是'+self.name+',我的年龄是'+str(self.age)+'.')
def greet(self,person):
''' 用于实例的打招呼 '''
print('你好,'+person+',我是'+self.name+'.')
def __del__(self):
""" 定义类的析构函数 """
# Python解释器内部约定,保留方法
# 使用del语句来删除对象且对象被真实删除时调用析构函数__del__()
# 真实删除: 当前对象的引用数为0或者当前程序退出时(垃圾回收)
print('再见,'+self.name+'!',end=' ')
print('对象:Friend(name={}, age={})删除中...'.format(self.name, self.age))
print('结束加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
# ------------------------------------------------------------------------------------- #
print('n主程序开始...')
wyf = Friend('铁凡', 25)
zh = Friend('昊昊', 27)
lzq = Friend('林麻子',26)
print(Friend.count,Friend.num_friends)
print(lzq.count,lzq.num_friends)
print('访问实例方法'.center(100,'-'))
print('n自我介绍...')
zh.introduce()
wyf.introduce()
lzq.introduce()
print("n打招呼...")
zh.greet('路人甲')
wyf.greet('路人乙')
lzq.greet('路人丙')
# lzq_X = lzq # 增加lzq的一个引用lzq_X,那么即使使用del,也不会删除该对象,因为引用数不为零
# del lzq # 使用del来删除对象且对象被真实删除时调用析构函数__del__()
# 真实删除: 当前对象的引用数为0或者当前程序退出时(垃圾回收)
# ------------------------------------------------------------------------------------- #
print()
print('使用文档字符串'.center(100,'-'))
print(Friend.__doc__)
print(lzq.__doc__)
print(Friend.introduce.__doc__)
print(lzq.introduce.__doc__)
print(Friend.greet.__doc__)
print(lzq.greet.__doc__)
print(Friend.__init__.__doc__)
print(lzq.__init__.__doc__)
print(Friend.__del__.__doc__)
print(lzq.__del__.__doc__)
# --- #
# 奇怪的使用方式,不建议这样使用
print()
print('奇怪的使用方式,不建议这样使用'.center(100,'-'))
Friend.introduce(zh) # 这行代码能正常运行
Friend.greet(wyf,'甲乙丙丁') # 这行代码能正常运行
print()
print('程序执行结束,退出!'.center(100,'-'))
控制台下的输出结果展示:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
加载个人及系统配置文件用了 830 毫秒。
(base) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> conda activate ssd4pytorch1_2_0
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> & 'D:Anaconda3envsssd4pytorch1_2_0python.exe' 'c:Userschenxuqi.vscodeextensionsms-python.python-2021.1.502429796pythonFileslibpythondebugpylauncher' '62023' '--' 'c:UserschenxuqiDesktopNews4cxqtest4cxqtest_class_3.py'
-------------------------------------------开始加载类对象Friend--------------------------------------------
-------------------------------------------结束加载类对象Friend--------------------------------------------
主程序开始...
3 1003
3 1003
-----------------------------------------------访问实例方法-----------------------------------------------
自我介绍...
我是昊昊,我的年龄是27.
我是铁凡,我的年龄是25.
我是林麻子,我的年龄是26.
打招呼...
你好,路人甲,我是昊昊.
你好,路人乙,我是铁凡.
你好,路人丙,我是林麻子.
----------------------------------------------使用文档字符串-----------------------------------------------
自定义的类用来对现实世界中的朋友进行建模
自定义的类用来对现实世界中的朋友进行建模
用于实例的自我介绍
用于实例的自我介绍
用于实例的打招呼
用于实例的打招呼
初始化属性name和age
初始化属性name和age
定义类的析构函数
定义类的析构函数
------------------------------------------奇怪的使用方式,不建议这样使用-------------------------------------------
我是昊昊,我的年龄是27.
你好,甲乙丙丁,我是铁凡.
---------------------------------------------程序执行结束,退出!---------------------------------------------
再见,铁凡! 对象:Friend(name=铁凡, age=25)删除中...
再见,昊昊! 对象:Friend(name=昊昊, age=27)删除中...
再见,林麻子! 对象:Friend(name=林麻子, age=26)删除中...
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq>
2.类方法,类对象的方法, 由所有实例对象共享:
实验代码展示:
# 演示方法的使用
# 方法是类内部定义的函数
# 1.实例方法, 实例对象的方法,由各实例对象独享,最常用的形式
# 2.类方法,类对象的方法, 由所有实例对象共享
# 3.自由方法,类中的一个普通函数,由类所在命名空间管理,类对象独享
# 4.静态方法,类中的一个普通函数,由类对象和实例对象所共享
# 5.保留方法,由双下划线开始和结束,保留使用,如__len__()
class Friend(object):
"""自定义的类用来对现实世界中的朋友进行建模""" # 设置文档字符串docstring
count = 0 # 定义类属性,并赋初值
num_friends = 1000 # 定义类属性,并赋初值
print('开始加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
def __init__(self, name, age):
'''初始化属性name和age'''
self.name = name # 定义实例属性,并赋初值
self.age = age # 定义实例属性,并赋初值
Friend.count += 1 # 通过类型名来访问类属性
Friend.num_friends += 1 # 通过类型名来访问类属性
def introduce(self):
''' 用于实例的自我介绍 '''
print('我是'+self.name+',我的年龄是'+str(self.age)+'.')
def greet(self,person):
''' 用于实例的打招呼 '''
print('你好,'+person+',我是'+self.name+'.')
def __del__(self):
""" 定义类的析构函数 """
# Python解释器内部约定,保留方法
# 使用del语句来删除对象且对象被真实删除时调用析构函数__del__()
# 真实删除: 当前对象的引用数为0或者当前程序退出时(垃圾回收)
print('再见,'+self.name+'!',end=' ')
print('对象:Friend(name={}, age={})删除中...'.format(self.name, self.age))
@classmethod # 定义类方法所需的装饰器
def get_countCM(cls): # 可以使用别的标识符,但是建议使用cls
print('类方法get_countCM正在被执行...')
return Friend.count
@classmethod # 定义类方法所需的装饰器
def get_num_friends_CM(cls, year):
print('类方法get_num_friends_CM正在被执行...' + str(year))
return Friend.num_friends
print('结束加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
# ------------------------------------------------------------------------------------- #
print('n主程序开始...')
wyf = Friend('铁凡', 25)
zh = Friend('昊昊', 27)
lzq = Friend('林麻子',26)
print('访问类方法'.center(100,'-'))
print('n通过类名访问...')
print(Friend.get_countCM())
print(Friend.get_num_friends_CM(2020))
print('n通过实例名访问...')
print(lzq.get_countCM())
print(lzq.get_num_friends_CM(2008))
# ------------------------------------------------------------------------------------- #
print('程序执行结束,退出!'.center(100,'-'))
控制台输出结果:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
加载个人及系统配置文件用了 876 毫秒。
(base) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> conda activate ssd4pytorch1_2_0
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> & 'D:Anaconda3envsssd4pytorch1_2_0python.exe' 'c:Userschenxuqi.vscodeextensionsms-python.python-2021.1.502429796pythonFileslibpythondebugpylauncher' '62449' '--' 'c:UserschenxuqiDesktopNews4cxqtest4cxqtest_class_4.py'
-------------------------------------------开始加载类对象Friend--------------------------------------------
-------------------------------------------结束加载类对象Friend--------------------------------------------
主程序开始...
-----------------------------------------------访问类方法------------------------------------------------
通过类名访问...
类方法get_countCM正在被执行...
3
类方法get_num_friends_CM正在被执行...2020
1003
通过实例名访问...
类方法get_countCM正在被执行...
3
类方法get_num_friends_CM正在被执行...2008
1003
---------------------------------------------程序执行结束,退出!---------------------------------------------
再见,铁凡! 对象:Friend(name=铁凡, age=25)删除中...
再见,昊昊! 对象:Friend(name=昊昊, age=27)删除中...
再见,林麻子! 对象:Friend(name=林麻子, age=26)删除中...
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq>
3.自由方法,,类中的一个普通函数,由类所在命名空间管理,类对象独享.
代码实验展示:
# 演示方法的使用
# 方法是类内部定义的函数
# 1.实例方法, 实例对象的方法,由各实例对象独享,最常用的形式
# 2.类方法,类对象的方法, 由所有实例对象共享
# 3.自由方法,类中的一个普通函数,由类所在命名空间管理,类对象独享
# 4.静态方法,类中的一个普通函数,由类对象和实例对象所共享
# 5.保留方法,由双下划线开始和结束,保留使用,如__len__()
class Friend(object):
"""自定义的类用来对现实世界中的朋友进行建模""" # 设置文档字符串docstring
count = 0 # 定义类属性,并赋初值
num_friends = 1000 # 定义类属性,并赋初值
print('开始加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
def __init__(self, name, age):
'''初始化属性name和age'''
self.name = name # 定义实例属性,并赋初值
self.age = age # 定义实例属性,并赋初值
Friend.count += 1 # 通过类型名来访问类属性
Friend.num_friends += 1 # 通过类型名来访问类属性
def introduce(self):
''' 用于实例的自我介绍 '''
print('我是'+self.name+',我的年龄是'+str(self.age)+'.')
def greet(self,person):
''' 用于实例的打招呼 '''
print('你好,'+person+',我是'+self.name+'.')
def __del__(self):
""" 定义类的析构函数 """
# Python解释器内部约定,保留方法
# 使用del语句来删除对象且对象被真实删除时调用析构函数__del__()
# 真实删除: 当前对象的引用数为0或者当前程序退出时(垃圾回收)
print('再见,'+self.name+'!',end=' ')
print('对象:Friend(name={}, age={})删除中...'.format(self.name, self.age))
def show_info(): # 定义自由方法, namespace method
print('自由方法show_info()正在被执行...')
print('count =',Friend.count,' num_friends =',Friend.num_friends)
def show_namespace_method(info, num): # 定义自由方法, namespace method
print('自由方法show_namespace_method()正在被执行...')
print(info*num)
print('结束加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
# ------------------------------------------------------------------------------------- #
print('n主程序开始...')
wyf = Friend('铁凡', 25)
zh = Friend('昊昊', 27)
lzq = Friend('林麻子',26)
print('访问自由方法'.center(100,'-'))
print('n通过类名访问...')
Friend.show_info()
Friend.show_namespace_method('天津市',3)
print('n通过实例名访问...')
# wyf.show_info() # 报错
# wyf.show_namespace_method('江苏省', 5) # 报错
# ------------------------------------------------------------------------------------- #
print('程序执行结束,退出!'.center(100,'-'))
控制台下输出结果展示:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
加载个人及系统配置文件用了 929 毫秒。
(base) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> conda activate ssd4pytorch1_2_0
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> & 'D:Anaconda3envsssd4pytorch1_2_0python.exe' 'c:Userschenxuqi.vscodeextensionsms-python.python-2021.1.502429796pythonFileslibpythondebugpylauncher' '63058' '--' 'c:UserschenxuqiDesktopNews4cxqtest4cxqtest_class_4.py'
-------------------------------------------开始加载类对象Friend--------------------------------------------
-------------------------------------------结束加载类对象Friend--------------------------------------------
主程序开始...
-----------------------------------------------访问自由方法-----------------------------------------------
通过类名访问...
自由方法show_info()正在被执行...
count = 3 num_friends = 1003
自由方法show_namespace_method()正在被执行...
天津市天津市天津市
通过实例名访问...
---------------------------------------------程序执行结束,退出!---------------------------------------------
再见,铁凡! 对象:Friend(name=铁凡, age=25)删除中...
再见,昊昊! 对象:Friend(name=昊昊, age=27)删除中...
再见,林麻子! 对象:Friend(name=林麻子, age=26)删除中...
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq>
4.静态方法,类中的一个普通函数,由类对象和实例对象所共享.
实验代码展示:
# 演示方法的使用
# 方法是类内部定义的函数
# 1.实例方法, 实例对象的方法,由各实例对象独享,最常用的形式
# 2.类方法,类对象的方法, 由所有实例对象共享
# 3.自由方法,类中的一个普通函数,由类所在命名空间管理,类对象独享
# 4.静态方法,类中的一个普通函数,由类对象和实例对象所共享
# 5.保留方法,由双下划线开始和结束,保留使用,如__len__()
class Friend(object):
"""自定义的类用来对现实世界中的朋友进行建模""" # 设置文档字符串docstring
count = 0 # 定义类属性,并赋初值
num_friends = 1000 # 定义类属性,并赋初值
print('开始加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
def __init__(self, name, age):
'''初始化属性name和age'''
self.name = name # 定义实例属性,并赋初值
self.age = age # 定义实例属性,并赋初值
Friend.count += 1 # 通过类型名来访问类属性
Friend.num_friends += 1 # 通过类型名来访问类属性
def introduce(self):
''' 用于实例的自我介绍 '''
print('我是'+self.name+',我的年龄是'+str(self.age)+'.')
def greet(self,person):
''' 用于实例的打招呼 '''
print('你好,'+person+',我是'+self.name+'.')
def __del__(self):
""" 定义类的析构函数 """
# Python解释器内部约定,保留方法
# 使用del语句来删除对象且对象被真实删除时调用析构函数__del__()
# 真实删除: 当前对象的引用数为0或者当前程序退出时(垃圾回收)
print('再见,'+self.name+'!',end=' ')
print('对象:Friend(name={}, age={})删除中...'.format(self.name, self.age))
@staticmethod
def show_info(): # 定义静态方法, static method
print('静态方法show_info()正在被执行...')
print('count =',Friend.count,' num_friends =',Friend.num_friends)
@staticmethod
def show_static_method(info, num): # 定义静态方法, static method
print('静态方法show_static_method()正在被执行...')
print(info*num)
print('结束加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
# ------------------------------------------------------------------------------------- #
print('n主程序开始...')
wyf = Friend('铁凡', 25)
zh = Friend('昊昊', 27)
lzq = Friend('林麻子',26)
print('访问静态方法'.center(100,'-'))
print('n通过类名访问...')
Friend.show_info()
Friend.show_static_method('天津市',3)
print('n通过实例名访问...')
wyf.show_info()
wyf.show_static_method('江苏省', 5)
# ------------------------------------------------------------------------------------- #
print('程序执行结束,退出!'.center(100,'-'))
控制台下的输出结果展示:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
加载个人及系统配置文件用了 1081 毫秒。
(base) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> conda activate ssd4pytorch1_2_0
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> & 'D:Anaconda3envsssd4pytorch1_2_0python.exe' 'c:Userschenxuqi.vscodeextensionsms-python.python-2021.1.502429796pythonFileslibpythondebugpylauncher' '63243' '--' 'c:UserschenxuqiDesktopNews4cxqtest4cxqtest_class_4.py'
-------------------------------------------开始加载类对象Friend--------------------------------------------
-------------------------------------------结束加载类对象Friend--------------------------------------------
主程序开始...
-----------------------------------------------访问静态方法-----------------------------------------------
通过类名访问...
静态方法show_info()正在被执行...
count = 3 num_friends = 1003
静态方法show_static_method()正在被执行...
天津市天津市天津市
通过实例名访问...
静态方法show_info()正在被执行...
count = 3 num_friends = 1003
静态方法show_static_method()正在被执行...
江苏省江苏省江苏省江苏省江苏省
---------------------------------------------程序执行结束,退出!---------------------------------------------
再见,铁凡! 对象:Friend(name=铁凡, age=25)删除中...
再见,昊昊! 对象:Friend(name=昊昊, age=27)删除中...
再见,林麻子! 对象:Friend(name=林麻子, age=26)删除中...
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq>
5.保留方法,由双下划线开始和结束,保留使用,如__len__().
实验代码展示:
# 演示方法的使用
# 方法是类内部定义的函数
# 1.实例方法, 实例对象的方法,由各实例对象独享,最常用的形式
# 2.类方法,类对象的方法, 由所有实例对象共享
# 3.自由方法,类中的一个普通函数,由类所在命名空间管理,类对象独享
# 4.静态方法,类中的一个普通函数,由类对象和实例对象所共享
# 5.保留方法,由双下划线开始和结束,保留使用,如__len__()
class Friend(object):
"""自定义的类用来对现实世界中的朋友进行建模""" # 设置文档字符串docstring
count = 0 # 定义类属性,并赋初值
num_friends = 1000 # 定义类属性,并赋初值
print('开始加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
def __init__(self, name, age):
'''初始化属性name和age'''
self.name = name # 定义实例属性,并赋初值
self.age = age # 定义实例属性,并赋初值
Friend.count += 1 # 通过类型名来访问类属性
Friend.num_friends += 1 # 通过类型名来访问类属性
def introduce(self):
''' 用于实例的自我介绍 '''
print('我是'+self.name+',我的年龄是'+str(self.age)+'.')
def greet(self,person):
''' 用于实例的打招呼 '''
print('你好,'+person+',我是'+self.name+'.')
def __del__(self):
""" 定义类的析构函数 """
# Python解释器内部约定,保留方法
# 使用del语句来删除对象且对象被真实删除时调用析构函数__del__()
# 真实删除: 当前对象的引用数为0或者当前程序退出时(垃圾回收)
print('再见,'+self.name+'!',end=' ')
print('对象:Friend(name={}, age={})删除中...'.format(self.name, self.age))
def __len__(self): # 保留方法,用于操作符len()
print('保留方法__len__()正在被访问...')
return len(self.name) + 10000 * self.age
print('结束加载类对象Friend'.center(100,'-')) # 类内的可执行语句会被自动执行,但是一般不这样使用
# ------------------------------------------------------------------------------------- #
print('n主程序开始...')
wyf = Friend('铁凡', 25)
zh = Friend('昊', 27)
lzq = Friend('林麻子',26)
print('使用len()函数来访问保留方法__len__()'.center(100,'-'))
print(len(wyf))
print(len(zh))
print(len(lzq))
print('使用del操作符来访问保留方法__del__()'.center(100,'-'))
del zh
del lzq
# ------------------------------------------------------------------------------------- #
print('程序执行结束,退出!'.center(100,'-'))
控制台下的输出结果展示:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
加载个人及系统配置文件用了 1022 毫秒。
(base) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> conda activate ssd4pytorch1_2_0
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq> & 'D:Anaconda3envsssd4pytorch1_2_0python.exe' 'c:Userschenxuqi.vscodeextensionsms-python.python-2021.1.502429796pythonFileslibpythondebugpylauncher' '63697' '--' 'c:UserschenxuqiDesktopNews4cxqtest4cxqtest_class_4.py'
-------------------------------------------开始加载类对象Friend--------------------------------------------
-------------------------------------------结束加载类对象Friend--------------------------------------------
主程序开始...
-------------------------------------使用len()函数来访问保留方法__len__()--------------------------------------
保留方法__len__()正在被访问...
250002
保留方法__len__()正在被访问...
270001
保留方法__len__()正在被访问...
260003
--------------------------------------使用del操作符来访问保留方法__del__()--------------------------------------
再见,昊! 对象:Friend(name=昊, age=27)删除中...
再见,林麻子! 对象:Friend(name=林麻子, age=26)删除中...
---------------------------------------------程序执行结束,退出!---------------------------------------------
再见,铁凡! 对象:Friend(name=铁凡, age=25)删除中...
(ssd4pytorch1_2_0) PS C:UserschenxuqiDesktopNews4cxqtest4cxq>
最后
以上就是忧伤乌龟为你收集整理的Python中实例方法、类方法、自由方法、静态方法、保留方法的使用举例的全部内容,希望文章能够帮你解决Python中实例方法、类方法、自由方法、静态方法、保留方法的使用举例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复