Python类变量

# _*_ 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()

posted @   妖孽成佛  阅读(1275)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示