博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python类的成员
阅读量:6342 次
发布时间:2019-06-22

本文共 4357 字,大约阅读时间需要 14 分钟。

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

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 = laopop1 = 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 = 10010u.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 mathclass 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 = emaillst = []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 = pwdclass 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()

  

 

转载于:https://www.cnblogs.com/liucsxiaoxiaobai/p/9925011.html

你可能感兴趣的文章
[Android UI] Shape详解 (GradientDrawable)
查看>>
边学边体验django--HttpRequest 对象
查看>>
18.3 redis 的安装
查看>>
jdbc 简单连接
查看>>
多态初步认识
查看>>
数组处理:118
查看>>
为什么要优先使用组合而不是继承 .
查看>>
【MySql】权限不足导致的无法连接到数据库以及权限的授予和撤销
查看>>
android实现gif图与文字混排
查看>>
安卓新标准出台_告别乱弹窗_你的手机真会省电么?
查看>>
hdu1384Intervals(差分约束)
查看>>
python 字符编码
查看>>
269D Maximum Waterfall
查看>>
C++11 多线程
查看>>
sed-加速你在Linux的文件编辑
查看>>
HttpServer发送数据到kafka
查看>>
phpcms站---去除域名绑定目录中的HTML
查看>>
2017-5-3 打印控件、MDI 窗体容器
查看>>
20155303 2016-2017-2 《Java程序设计》第九周学习总结
查看>>
一次很失败的抄底
查看>>