# _*_ coding:utf-8 _*_
# Author: 林楠
# edit time: 2022/4/24 13:47
# name: 类变量.py
# Product: PyCharm
# 类成员
# 类中的成员变量描述对象的属性值根据对象不同会产生区别,称此类变量为实例变量
# 类中的成员变量描述对象的属性值根据对象不同,不会产生区别,称此类变量为类变量
# 类变量是归属类的,实例变量是归属对象的
"""
定义格式:
class 类名:
变量名 = 值
调用格式:
赋值:类名.变量名 = 值
取值:类名。变量名
对象名.变量名
"""
'''
class Cat:
subject = "猫科" # 类变量
def __init__(self,type,name):
self.__type = type
self.__name = name
def get_type(self):
return self.__type
def set_type(self,type):
self.__type = type
def get_name(self):
return self.__name
def set_name(self,name):
self.__name = name
cat1 = Cat("英格兰小短毛猫","小短毛")
# 访问方式一:类名.类变量名(推荐)
print(Cat.subject)
# 访问方式二:对象名.类变量名
print(cat1.subject)
cat2 = Cat("波斯猫","大帅")
print(cat2.subject)
cat1 = Cat("英格兰小短毛猫","小短毛")
# cat1.subject = "猫“ # 类变量不允许使用对象名进行调用修改,只能通过类名修改
Cat.subject = "喵星人"
print(Cat.subject)
print(cat1.subject)
'''
# 类变量注意事项:
# 1.类变量推荐使用类名访问,可以使用对象名访问。
# 2.类变量只能通过类名修改,使用对象修改类变量是创建了新的对象变量
# 3.类变量可以私有化。
"""
# 类方法
定义格式:
class 类名:
@classmethod
____def 方法名(cls,形参列表)
________方法体
调用格式:
类名.方法名(实参列表)-------推荐
对象名.方法名(实参列表)
"""
# # 类方法注意事项:
# 1.类方法中不允许使用实例变量和实例方法
# 2.实例方法中允许使用类变量和类方法
class Chinese:
country = "中国"
def __init__(self,id_num,name):
self.id_num = id_num
self.name = name
# @classmethod
# def show_country(cls):
# print("我是中国人")
@classmethod
def show_country(cls):
"""类方法调用实例的成员"""
print("我是中国人")
# print(self.name) X
# self.show() X
def show(self):
"""实例方法调用类的成员"""
print(self.name)
print(Chinese.country)
Chinese.show_country()
# c = Chinese("11111111111111111111","名字")
# Chinese.show_country() # 推荐
# c.show_country()
"""演示实例方法中调用类的成员"""
# c = Chinese("11111111111111111111","名字")
# c.show()
"""演示类方法中调用实例的成员"""
Chinese.show_country()
# 演示类方法理解误区:self cls自动补充
'''
class Chinese:
country = "中国"
def __init__(self,id_num,name):
self.id_num = id_num
self.name = name
# @classmethod
# def show_country(cls):
# """类方法调用实例成员"""
# print("我是中国人")
# print(self.name)
#
# Chinese.show_country()
"""自动补充"""
# def show(self):
# print(self.name)
# def show(cls):
# print(cls.name)
# def show(a):
# print(a.name)
c = Chinese("111111111111111","名字")
c.show()
'''
"""
# 静态方法
定义格式:
class 类名:
@staticmethod
____def 方法名(形参列表)
________方法体
调用格式:
类名.方法名(实参列表)
对象名.方法名(实参列表)
"""
# 静态方法与类无关,可以将其转为函数使用。
'''
class Chinese:
country = "中国"
def __init__(self,id_num,name):
self.id_num = id_num
self.name = name
@staticmethod
def show():
print("今天天气")
def show():
print("今天天气")
c = Chinese("qqqqqqqqqq1111","这个人")
c.show()
Chinese.show()
'''
# 面向对象名称总结
"""
变量称呼
全局变量 5
局部变量 2
公有变量 1
独有变量 5
私有变量 3
类变量 4
成员变量 = 公有变量
对象变量(对象的XXX变量)
对象属性(对象的XXX属性)
"""
class User:
country = "类变量"
__title = "私有变量,类变量"
def __init__(self):
self.name = "公有变量"
self.__age = "公有变量,私有变量"
info = "局部变量"
def test(self):
self.address = "公有变量"
email = "局部变量"
u = User():
u.gender = "独有变量"
city = "全局变量"
info = "全局变量"
def test():
info = "局部变量"
global city #全局变量
city = "全局变量"
# 方法称呼
"""
方法
类方法
静态方法
函数
成员方法,实例方法
构造方法
"""
class User:
def __init__(self,name,age):
self.name = name
self.age = age
def instance_method(self,info):
message = "你好"
print("实例方法")
@classmethod
def class_method(cls,info):
message = "你好"
print("类方法")
@staticmethod
def static_method(info):
message = "你好"
print("静态方法")
def test():
pass #函数
# 对象称呼
"""
对象
实例 instance
"""
class User:
pass
u = User()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通