一.实例变量:简单的来说就是给对象赋值

class Person:
def __init__(self, name, card_no, height, weight, address, laopo):
# 实例变量. 给对象赋值
self.name = name
self.card_no = card_no
self.height = height
self.weight = weight
self.address = address
self.laopo = laopo p1 = Person("马化腾", "123456789123456781", 1.60, 180, "深圳市南山区南山法院", "不知道")
p1.company = "腾讯" # 添加实例变量-> 字段 -> 属性(java) p2 = Person("刘强东", "789456132456789123", 1.65, 190, "宿迁", "奶茶妹妹") print(p2.name)
print(p1.laopo)
2类变量的修改只能通过类名来完成
class Person:
country = "中国"
def __init__(self,name, age):
self.name = name
self.age = age # Person.country = "大清"
# print(Person.country) # 直接使用类名进行访问
p1 = Person("alex", 185)
p1.country = "大清" # 添加了一个实例变量
print(p1.name)
print(p1.country) p2 = Person("wusir", 145)
print(p2.name)
print(p2.country)
# 类变量的修改只能通过类名来完成

3实例的方法:

class Car:
def run(self):
print("会跑的车") def cul(self, a, b):
return a + b def jump(self):
print("you jump i jump") c = Car()
c.run() # 调用实例方法
print(c.cul(1 , 3))
c.jump()

二,类的方法

class Person:
def chi(self): # 实例方法
print("人在吃") # 类方法
@classmethod # 类方法
def he(cls): # cls 类
print(cls)
print("我是喝") @staticmethod
def shui(): # 在类中定义的一个普通函数
print("和你睡不等于睡你 -- 姜文") @staticmethod
def 上天(height): # 在类中定义的一个普通函数
print("上天%s" % height) # print(Person)
# Person.he() # p = Person()
# p.he() # 不管用对象还是用类去访问类方法. 默认传递进去的是类 Person.shui()
Person.上天(500)
# p = Person()
# p.shui()

属性

class User:
def __init__(self, name, birthday, qq, email):
self.name = name
self.birthday = birthday
self.qq = qq
self.email = email # 方法
@property # 可以把一个方法变成一个属性
def age(self):
return 2018 - self.birthday
'''
@property
1. 函数只能有一个self参数.
2. 需要有返回值
3. 不能赋值
4. 调⽤的时候, 我们不需要写括号. 直接当成属性变量来⽤就可以了 '''
u = User("王明", 1994, 1024663304, "wangming@126.com")
print(u.age)
u.qq = 10010
u.age = 18

私有属性

class Person:
def __init__(self, name): # 构造, 创建对象的时候自动调用
self.__name = name # 私有的
print("这里是构造方法") def init(self):
print("实例方法") def __chi(self): # 私有的
print("我要吃. 疯狂的吃") def he(self):
self.__chi() # 内部调用
print("我是喝", self.__name) p = Person("孙艺珍")
p.he()
# # p.__init__() # 很蠢
# p.init()
# print(p.__name)

 练习

定义一个类,其中有计算周长和面积的方法(圆的半径通过参数传递到构造方法)
import math class Circle:
"""
对圆的封装
""" def __init__(self, r):
''' :param r: 半径
'''
self.r = r def c(self):
''' :return: 周长
'''
return 2 * math.pi * self.r def s(self):
''' :return: 面积
'''
return math.pi * self.r * self.r
输入用户信息
class UserInfo:
"""
封装三个信息: name,pwd, email
"""
def __init__(self, name, pwd, email):
self.name = name
self.pwd = pwd
self.email = email
lst = []
while len(lst) < 3:
uname = input("请输入你的用户名:")
pwd = input("请输入你的密码:")
email = input("请输入你的邮箱:")
user = UserInfo(uname, pwd, email)
lst.append(user)
for u in lst:
print("你叫%s, 邮箱是%s" % (u.name, u.email))
用户注册用户登录功能
class User: # 用户
def __init__(self, name, pwd):
self.name = name
self.pwd = pwd class Account: # 账户
def __init__(self):
self.user_list = [] # 用户列表,数据格式:[User对象,User对象,User对象] def login(self):
print("登录环节")
###用户登录,用户输入用户名和密码并去self,user1ist中检查用户是否合法
username = input("请输入你的用户名:")
password = input("请输入你的密码:")
for u in self.user_list:
if username == u.name and password == u.pwd: # 成功
return True
else:
return False def register(self):
print("注册环节")
### 用户注册,动态创建User对象,并添加到self, user list中
uname = input("请输入你的用户名:")
psw = input("请输入你的密码:")
u = User(uname, psw) # 创建用户对象
self.user_list.append(u) def run(self):
### Q主程序,先进行2次用户注册,再进行用户登录(3次重试机
self.register()
self.register()
# self.user_list = > [user, user]
# 三次登录....
for i in range(3):
ret = self.login()
if ret == True:
print("登录成功")
break
else:
print("太失败了. 三次都没成功") # 当前py文件是否是启动文件
if __name__ == "__main__": # 模块.
obj = Account()
obj.run()

  

python类的成员的更多相关文章

  1. python 类的成员及继承

    1. @staticmethod 静态方法 静态方法不能访问实例变量和类变量,除了身处类里面,所以只能通过类调用以外,它其实和类没有什么关系.如果想要用它访问实例变量或类变量,需要把实例和类传递给函数 ...

  2. python 类特殊成员

    class Foo: def __init__(self,age): self.age=age print('init') def __call__(self): print('call') def ...

  3. Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

    上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...

  4. python - 类成员修饰符

    在java,c#类的成员修饰符包括,公有.私有.程序集可用的.受保护的. 对于python来说,只有两个成员修饰符:公有成员,私有成员 成员修饰符是来修饰谁呢?当然是修饰成员了.那么python类的成 ...

  5. python中的类的成员变量以及property函数

    1 python类的各种变量 1.1 全局变量 在类外定义的变量. 1.2 类变量 定义在类里面,所有的函数外面的变量.这个变量只有一份,是所有的对象共有的.在类外用“类.”来引用. 1.3 实例变量 ...

  6. python基础-9.1 面向对象进阶 super 类对象成员 类属性 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

    上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...

  7. python之类私有成员

    python类的成员前加双下划线"__", 则被看作"私有"成员. 实例不能简单地通过<instance>.<name>来访问. 但py ...

  8. 转:从pickle看python类成员的动态加载和类的定位

      pickle是Python轻便的对象序列化工具.使用pickle可以方便地把python对象写入文件对象中,或者像soap那样在socket间传送.     按照python的一贯作风,类的成员在 ...

  9. Python类之类的成员

    对于一个学C++的朋友来说,Python类中,哪些是私有成员,哪些是共有成员,估计一直傻傻分不清. 一.本篇博客要解决的问题: Python类中,哪些是私有成员?哪些是共有成员? 二. 关于Pytho ...

随机推荐

  1. linux系统Centos环境下搭建SVN服务器及权限配置

    linux系统Centos环境下如何搭建SVN服务器以及svnserve.conf.authz.passwd配置文件详细介绍   至于svn的概念,这里就不做详细阐述了,可以自行百度.简单来讲就是一个 ...

  2. 微信企业号OAuth2.0验证接口来获取成员的身份信息

    <?php $appid = "请输入您企业的appid"; $secret = "请输入您企业的secreat"; if (!isset($_GET[' ...

  3. phpStudy集成环境下 安装composer

    报错提示: The "https://getcomposer.org/versions" file could not be downloaded: failed to open  ...

  4. Redis可以用来做什么?(摘自http://www.lianpenglin.cc廉鹏林博客)

    Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」.Redis 以其超高的性能.完美的文档.简洁易懂的 ...

  5. BeanUtils工具的使用

    beanutils的下载地址:http://commons.apache.org/proper/commons-beanutils/download_beanutils.cgi 该压缩包有测试的代码: ...

  6. P3804 【模板】后缀自动机

    P3804 [模板]后缀自动机 后缀自动机模板 详情可见luogu题解板块 #include<iostream> #include<cstdio> #include<cs ...

  7. 【题解】Luogu P4391 [BOI2009]Radio Transmission 无线传输

    原题传送门 这题需要用到kmp匹配 推导发现: 设循环节的长度为x,那么kmp数组前x个都是0,后面kmp[x+n]=n 先求出kmp数组 答案实际就是len-kmp[len] #include &l ...

  8. Python3+Dlib实现简单人脸识别案例

    Python3+Dlib实现简单人脸识别案例 写在前边 很早很早之前,当我还是一个傻了吧唧的专科生的时候,我就听说过人脸识别,听说过算法,听说过人工智能,并且也出生牛犊不怕虎般的学习过TensorFl ...

  9. es修改数据类型

    环境:es版本:6.5.0 es创建好了mapping后是不允许修改字段类型的,要是我们想修改字段类型怎么办呢,我们可以采用reindex的方法实现,就是创建一个新的mapping,里面的字段类型按照 ...

  10. MFC中的CString类使用方法指南

    MFC中的CString类使用方法指南 原文出处:codeproject:CString Management [禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助.我们在MFC中使用字符 ...