python 面向对象 公有属性
公有属性定义 公有属性也叫作类变量 静态字段
class role(): # 传参数
# 公有属性都在这里定义
# 在类里直接定义的属性即是公有属性
nationality = 'JP'
def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
# 成员属性
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性
def shot(self): # 类的方法,功能(动态属性)
print("shotting")
# 定义一个方法用来对外访问
def show_heart(self):
return self.__heart
def got_shot(self):
print("on,%s got shoot..." % self.name)
def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name
b1 = role('mike','警察','AK47')
b2 = role('mike','警犬','B13')
print(b1.weapon) # AK47 打印的是成员属性
# b2武器也是成员属性
# 想让 b1 b2 共享武器需要公有属性
print(b1.nationality) # JP
print(b2.nationality) # JP
修改公有属性
class role(): # 传参数
# 公有属性都在这里定义
# 在类里直接定义的属性即是公有属性
nationality = 'JP'
def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
# 成员属性
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性
def shot(self): # 类的方法,功能(动态属性)
print("shotting")
# 定义一个方法用来对外访问
def show_heart(self):
return self.__heart
def got_shot(self):
print("on,%s got shoot..." % self.name)
def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name
b1 = role('mike','警察','AK47')
b2 = role('mike','警犬','B13')
print(b1.weapon) # AK47 打印的是成员属性
# b2武器也是成员属性
# 想让 b1 b2 共享武器需要公有属性
b1.nationality = 'Thailand'
print(b1.nationality) # Thailand
print(b2.nationality) # JP
更改类的公有属性
class role(): # 传参数
# 公有属性都在这里定义
# 在类里直接定义的属性即是公有属性
nationality = 'JP'
def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
# 成员属性
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性
def shot(self): # 类的方法,功能(动态属性)
print("shotting")
# 定义一个方法用来对外访问
def show_heart(self):
return self.__heart
def got_shot(self):
print("on,%s got shoot..." % self.name)
def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name
b1 = role('mike','警察','AK47')
b2 = role('mike','警犬','B13')
print(b1.weapon) # AK47 打印的是成员属性
# b2武器也是成员属性
# 想让 b1 b2 共享武器需要公有属性
# 更改类的公有属性
role.nationality = 'Thailand'
# 两个都改了
print(b1.nationality) # Thailand
print(b2.nationality) # Thailand
class role(): # 传参数
# 公有属性都在这里定义
# 在类里直接定义的属性即是公有属性
nationality = 'JP'
def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
# 成员属性
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性
def shot(self): # 类的方法,功能(动态属性)
print("shotting")
# 定义一个方法用来对外访问
def show_heart(self):
return self.__heart
def got_shot(self):
print("on,%s got shoot..." % self.name)
def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name
b1 = role('mike','警察','AK47')
b2 = role('mike','警犬','B13')
print(b1.weapon) # AK47 打印的是成员属性
# b2武器也是成员属性
# 想让 b1 b2 共享武器需要公有属性
# 更改类的公有属性
role.nationality = 'Thailand'
# 两个都改了
print(b1.nationality) # Thailand
print(b2.nationality) # Thailand
print("-"*40)
b1.nationality = 'china'
print(b1.nationality)
print(b2.nationality)
'''
AK47
Thailand
Thailand
----------------------------------------
china
Thailand
'''
还没有实例化之前 就存在定义公有属性 公有属性就存在内存里
公有属性存在类的内存里, 可以省内存 不用放在构造函数里 每次实例化都保存在每个对象内存里
class role(): # 传参数
# 公有属性都在这里定义
# 在类里直接定义的属性即是公有属性
nationality = 'JP'
def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
# 成员属性
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性
def shot(self): # 类的方法,功能(动态属性)
print("shotting")
# 定义一个方法用来对外访问
def show_heart(self):
return self.__heart
def got_shot(self):
print("on,%s got shoot..." % self.name)
def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name
print(role.nationality) # JP
# b1 = role('mike','警察','AK47')
# b2 = role('mike','警犬','B13')
# # 更改类的公有属性
# role.nationality = 'Thailand'
#
# # 两个都改了
# print(b1.nationality) # Thailand
# print(b2.nationality) # Thailand
#
#
# print("-"*40)
# b1.nationality = 'china'
# print(b1.nationality)
# print(b2.nationality)


class role(): # 传参数
# 公有属性都在这里定义
# 在类里直接定义的属性即是公有属性
nationality = 'JP'
def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
# 成员属性
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性
def shot(self): # 类的方法,功能(动态属性)
print("shotting")
# 定义一个方法用来对外访问
def show_heart(self):
return self.__heart
def got_shot(self):
print("on,%s got shoot..." % self.name)
def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name
b1 = role('mike','警察','AK47')
b2 = role('mike','警犬','B13')
# 两个都改了
print(b1.nationality)
print(b2.nationality)
# 更改类的公有属性
role.nationality = 'china'
print(b1.nationality, b2.nationality)
'''
JP
JP
china china
'''
class role(): # 传参数
# 公有属性都在这里定义
# 在类里直接定义的属性即是公有属性
nationality = 'JP'
def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
# 成员属性
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性
def shot(self): # 类的方法,功能(动态属性)
print("shotting")
# 定义一个方法用来对外访问
def show_heart(self):
return self.__heart
def got_shot(self):
print("on,%s got shoot..." % self.name)
def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name
b1 = role('mike','警察','AK47')
b2 = role('mike','警犬','B13')
# 两个都改了
print(b1.nationality)
print(b2.nationality)
# 更改类的公有属性
role.nationality = 'china'
print(b1.nationality, b2.nationality)
print("-"*40)
b1.nationality = "USA"
print(b1.nationality)
print(b2.nationality)
'''
JP
JP
china china
----------------------------------------
USA
china
'''
在本地创建一个新的 r1.nationality = CN 与Role 没有半点关系

函数 方法也是公有属性
class role(): # 传参数
# 公有属性都在这里定义
# 在类里直接定义的属性即是公有属性
nationality = 'JP'
def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
# 成员属性
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性
# 这里的函数 方法 也是公有属性
def shot(self): # 类的方法,功能(动态属性)
print("shotting")
# 定义一个方法用来对外访问
def show_heart(self):
return self.__heart
def got_shot(self):
print("on,%s got shoot..." % self.name)
def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name
b1 = role('mike','警察','AK47')
b2 = role('mike','警犬','B13')
def shot2(self):
print("my shot",self.name)
b1.shot = shot2
b1.shot(b1) # 需要手动传参数
b2.shot() # 用原来对象方法
'''
my shot mike
shotting
'''
python 公有属性可以用类访问,也可以用对象访问
公有属性只能用类去访问
class po:
country = "中国"
def __init__(self, name):
self.name = name
s1 = po("河南")
# python 公有属性可以用类访问,也可以用对象访问
print(po.country)
print(s1.country)
'''
中国
中国
'''
私有公有属性 对外不能访问
class Foo(object):
__name = "mike"
print(Foo.__name)
'''
Traceback (most recent call last):
File "C:/Users/Administrator.QH-20170325TNQR/PycharmProjects/SSSSS/SS/day7/S13 面向对象/私有公有属性 .py", line 11, in <module>
print(Foo.__name)
AttributeError: type object 'Foo' has no attribute '__name'
'''
在内部普通方法可以访问
class Foo(object):
__name = "mike"
def __init__(self, name):
self.name = name
def f1(self):
print(Foo.__name)
obj = Foo("jack")
obj.f1()
# mike
使用静态方法 不创建对象
class Foo(object):
__name = "mike"
def __init__(self, name):
self.name = name
@staticmethod
def f1():
print(Foo.__name)
Foo.f1()
# mike
python 面向对象 公有属性的更多相关文章
- python 面向对象 公有属性 用在哪里
公有属性也可以叫做静态字段 如果每个对象都有一个共同的值 , 应该把它设置为公有属性 公有属性使用场景,每个对象中保存相同的东西时,可以使用公有属性 类找公有属性 过程
- python -- 面向对象编程(属性、方法)
一.属性 对象的属性(attribute)也叫做数据成员(data member). 如果想指向某个对象的属性,可以使用格式: object.attribute 属性又分为:私有属性和公有属性. 私有 ...
- python 面向对象 私有属性
__init__构造函数 self.name = name # 属性, 实例变量,成员变量,字段 def sayhi()# 方法, 动态属性 私有属性不对外看到 前面加上__ class role() ...
- python面向对象之类属性,实例属性
python中的属性分为类属性和实例属性,之前已经说过一些,这里主要是对类属性与实例属性的增删改查 首先是对类属性的增删改查,下面这个是对类属性的修改,在书写类时,已经对类属性occupation进行 ...
- python私有公有属性
python中,类内方法外的变量叫属性,类内方法内的变量叫字段.他们的私有公有访问方法类似. class C: __name="私有属性" def func(self): prin ...
- Python面向对象之类属性类方法静态方法
类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...
- Python面向对象之属性
属性的定义和调用 1,定义时,在普通方法的基础上添加@property装饰器 2,定义时,属性仅有一个self参数 3,调用时,无需括号 vim day7-8.py #!/usr/bin/python ...
- Python面向对象 | 类属性
property property是一个装饰器函数,可以将一个方法伪装成属性,调用的时候可以不用加().@property被装饰的方法,是不能传参数的,因为它伪装成属性了. 装饰器的使用:在要装饰的函 ...
- Python面向对象—类属性和实例属性
属性:就是属于一个对象的数据或函数元素 类有类方法.实例方法.静态方法.类数据属性(类变量)和实例数据属性(实例变量). 类属性:包括类方法和类变量,可以通过类或实例来访问,只能通过类来修改. 实例属 ...
随机推荐
- m_pRecordset->Open
结果:
- 第四章 Spring.Net 如何管理您的类___对象的手动装配
前面我们知道了什么是对象,什么是对象工厂,什么是应用程序上下文.这一次我们来看一下对象的装配. Spring.Net 中有多种装配对象的方式,装配这个词可能比较学术化,我们可以理解为对象的创建. Sp ...
- Oracle中给用户赋予debug权限
通过可视化工具(如PL/SQL Developer.Oracle SQL Developer)调试Oracle的存储过程时,如果遇到如下错误信息:...ORA-01031: insufficient ...
- mybatis由浅入深day01_4入门程序_4.6根据用户id(主键)查询用户信息
4 入门程序 4.1 需求 根据用户id(主键)查询用户信息 根据用户名称模糊查询用户信息 添加用户 删除 用户 更新用户 4.2 环境 java环境:jdk1.7.0_72 eclipse:indi ...
- ajax异步加载回跳定位
1)首先,问题是这样的:page1在一个滚动到页面底部加载更新的函数(功能),当页面滚动了第二页(或更多页)时,点击链接跳转到了其他页面(page2),在page2有返回按钮,当从page2返回pag ...
- Kafka中Producer端封装自定义消息
我们知道KeywordMessage就是被kafka发送和存储的对象.所以只需要模拟出这个就可以发送自定义消息了. 比如我需要将用户的id,user,age,address和访问ip和访问date记录 ...
- Python3 urllib 库
urllib 简介 urllib 基础模块 使用 urllib 发送请求 使用 urllib 构造请求对象 关于 Handler 与 opener 使用 urllib 进行身份验证 使用 urllib ...
- linux--GCC用法
1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Compilation) 2.3汇编(Assembly) 2.4连接(Linking) 3多个程序文件的编译 4检错 5库文件连接 5.1编译成 ...
- mysql触发器的实战经验-不错的文章
1 引言 Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多 ...
- 使用synchronized(非this对象)同步代码块解决脏读问题
首先通过示例来学习验证多个线程调用同一个方法时随机的. package syn_out_asyn; import java.util.ArrayList; import java.util.List; ...