当前位置: 主页 > Python语言

python 类属性 实例属性-python网络编程socket应用实例

发布时间:2023-03-11 07:04   浏览次数:次   作者:佚名

一:类的属性

类的属性分为:类属性(公有属性),实例属性和私有属性。

1)类属性(公有属性(静态字段):

类定义时直接指定的属性(不是在__init__方法中)python 类属性 实例属性,可以通过类名直接访问属性,并且保存在类的内存中,如果一个属性都有共同值就可以设置为公有属性。

2)实例属性:

python 类属性 实例属性_python类访问属性_python网络编程socket应用实例

在__init__方法中添加的属性,就是实例属性。实例属性保存在对象的内存中。

3)私有属性:

在__init__方法中定义,并且前面有两个__的属性:比如self.__heart="Normal" 这个就是私有属性,对外不可见python 类属性 实例属性,对内可见。

python网络编程socket应用实例_python 类属性 实例属性_python类访问属性

1.如果想外面看见私有属性,可以通过下面方法:

外面可以看见私有属性,但不能修改

def get_heart(self): #对外提供可读属性

python 类属性 实例属性_python类访问属性_python网络编程socket应用实例

return self.__heart

2.可以强制访问类的私有属性。方式:实例名._类名__私有属性 例:r1._role__heart

4)示例代码1:

python网络编程socket应用实例_python类访问属性_python 类属性 实例属性

# -*- coding:utf-8 -*-
__author__ = 'shisanjun'
class Person(object):
    country="中国"#类的公有属性或者类属性
    def __init__(self,name,age):
        self.name=name #实例属性
        self.age=age
        self.__salary="15000" #私有属性
    def talk(self):
        print("国家:%s,名称为:%s,年龄为:%s,薪水:%s" %(self.country,self.name,self.age,self.__salary))
    #提供私有属性访问接口
    def get_salary(self):
        return self.__salary
p=Person("shi",23)
p.talk()
#访问类属性
print(Person.country)
#实例属性
print(p.name)
#直接访问类的私有属性会报错
#print(p.__salary)
#强制访问私有属性
print(p._Person__salary)
#私有属性访问2:
print(p.get_salary())
"""
结果
国家:中国,名称为:shi,年龄为:23,薪水:15000
中国
shi
15000
15000
"""

示例代码2:

class Foo(object):
    country="中国“
    def __init__(self,name,count)
        self.name=name
        self.count=count
    def bar(self):
        pass
obj1=Foo("江苏")
obj1.bar()
obj2=Foo(“山东”)
obj2.bar
如果country="中国"放置在__init__中,每次实例化对象的时候country="中国“都会在内存中占用一块。而放在公有属性只占用一块。

解释器从上到下解释,先发现类,在内存中创建这个类,这个内存就存在这个方法。
obj1,obj2维护着和类的指针
执行obj1把自己传输进来 
公有属性(静态字段),只保存类中一份。如果一个属性都有共同值就可以设置为公有属性。
私有属性,是保存在对象中,可以是多份

python 类属性 实例属性_python类访问属性_python网络编程socket应用实例

5)内存演示1

python基础-类的属性(类属性,实例属性,私有属性)

5)公有属性内存演示2

python基础-类的属性(类属性,实例属性,私有属性)

原文链接:

python基础-类的属性(类属性,实例属性,私有属性)的更多相关文章