zoukankan      html  css  js  c++  java
  • (08)-Python3之--类和对象

     

    1.定义

    类:类是抽象的,一类事物的共性的体现。  有共性的属性和行为。

    对象:具体化,实例化。有具体的属性值,有具体做的行为。

    一个类 对应N多个对象。

    类包含属性以及方法。

    class 类名:
        属性
        方法

    定义一个类:

    class Preson:
         def eat(self):
              print("正在吃饭");
          def sleep(self):
              print("正在睡觉")

    2.类

    2.1命名

    类名:符合标识符的规定但是一般是每个单词的首字母大写。(驼峰命名)

    2.2创建对象

    属性写在类外的情况,就是通过对象.属性,对象.方法()的方法调用

    对象的三要素:属性(对象是什么)、方法(对象能做什么)、事件(对象如何响应)

    相互关系:类是对象的抽象,对象是类的实例,类是一种抽象事物的分类,对象是一种实例

    2.3属性

    概念:用于访问类字段的成员;

    属性用途:保证数据的安全,作数据的验证;

    例如:学生有哪些属性(昵称、学号、性别、年龄、班级、联系方式、城市)

    对象属性的两种创建方式:

    复制代码
    # self对象的载体
    
    def __int__(self, name, age):
        # 创建对象属性
        self.name = name
        self, age = age
    复制代码

    2.4初始化方法

    在创建类的实例的时候,会自动调用这个方法,一般是用户对实例属性初始化

    复制代码
    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
            print("实例化类时,init方法就被调用了")
    
    p = Person("tom", 22)
    print(p.name)
    print(p.age)
    
    结果:
    实例化类时,init方法就被调用了
    tom
    22
    复制代码

    2.5 Python中私有化特性

    为了让外部无法访问属性或方法,只要在名字前面加上双下划线即可

    对属性进行私有化 :__属性

    对方法进行私有化:__方法()

    复制代码
    class Secret:
        __name = 'yoda'  # 加上双下划线私有化属性
    
        def get_name(self):
            return self.__name
    
        def __secret(self):  # 私有化方法
            print("can't find")
    复制代码

    3.类的语法

    语法:

    复制代码
    class 类名:
      # 属性 - 变量
      # 行为 - 函数
      def 行为1(self):
      # self是我 self是指的实例化对象本身。定义的时候不知道对象到底是谁,用self
      self.属性
      self.行为N
    
      # 初始化 - 在实例化的同时,执行初始化工作。没有return的用法。
      def __init__(self,[参数1,参数2.。])
      ### 初始化工作
      ###
    
    # 具体化实例化
    实例名 = 类名([参数1,参数2.。。])
    # 通过实例名称来访问实例的属性、做行为
    实例名.属性
    实例名.行为
    复制代码

    实战例子:

    复制代码
    """
    需求:
    人和机器猜拳游戏写成一个类,有如下几个函数:
    1)函数1:选择角色1 曹操 2张飞 3 刘备
    2)函数2:角色猜拳1剪刀 2石头 3布 玩家输入一个1-3的数字
    3)函数3:电脑出拳 随机产生1个1-3的数字,提示电脑出拳结果
    4)函数4:角色和机器出拳对战,对战结束后,最后出示本局对战结果...赢...输。
    5)函数5:显示整个游戏过程中,角色赢几局 电脑赢几局,平局几次。
    
    一次猜拳结束后,要提示用户是否继续?按y继续,按n退出。
    最后结束的时候输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束
    """
    
    import random
    
    
    class GussesGame:
        datas = {"1": "剪刀", "2": "石头", "3": "布"}
    
        def __init__(self):
            self.user_game_result = [0, 0, 0]  # win,lose,tie
    
        # 选择角色
        def select_role(self, role_index):
            roles = {"1": "曹操", "2": "张飞", "3": "刘备"}
            if str(role_index) in roles.keys():
                print("您选择的角色为{}".format(roles[str(role_index)]))
    
        # 角色出拳
        def _role_finger_punch(self):
            number = input("请出拳(1剪刀 2石头 3布),出数字即可:")
            if number.isdigit() and number in self.datas.keys():
                print("角色出拳为:{}".format(self.datas[str(number)]))
                return int(number)
            else:
                print("角色出拳错误!!角色可出拳仅限为 1剪刀 2石头 3布")
    
        # 电脑出拳
        def _computer_finger_punch(self):
            number = random.randint(1, 3)
            if str(number) in self.datas.keys():
                print("电脑出拳为:{}".format(self.datas[str(number)]))
                return number
    
        # 人机对战
        def battle(self):
            # 用户出拳
            role_number = self._role_finger_punch()
            # 电脑出拳
            computer_number = self._computer_finger_punch()
            # PK
            if computer_number is not None and role_number is not None:
                if (role_number, computer_number) in [(1, 3), (2, 1), (3, 2)]:
                    print("恭喜,你赢了!一统江湖!")
                    self.user_game_result[0] += 1
                elif role_number == computer_number:
                    print("平局!实力不相上下!")
                    self.user_game_result[2] += 1
                else:
                    print("噢嗬!你败了!手下败将,敢不敢再来一局!")
                    self.user_game_result[1] += 1
            else:
                print("人机猜拳失败!!原因是某一方出拳不符合要求!")
    
            # 是否继续玩
            is_go_on = input("还没尽兴?是否继续?按y继续,按n退出。")
            if is_go_on == "y":
                return True
            else:
                return False
    
        # 战果显示
        def show_user_game_result(self):
            print("角色在本轮游戏当中的战果为:{}胜{}败{}平局".format(*self.user_game_result))
    
    
    if __name__ == "__main__":
        # 游戏 开始
        one = GussesGame()
        # 选角
        one.select_role(1)
        while True:
            # 人机battle
            is_go_on = one.battle()
            # 继续battle吗
            if is_go_on is False:
                print("不玩了,拜拜!!")
                break
    
        # battle的最终结果
        one.show_user_game_result()
  • 相关阅读:
    iPad 3g版完美实现打电话功能(phoneitipad破解)
    vb.NET基础总结
    PMP考试的过与只是
    Oracle基础学习5-- Oracle权限之”角色”
    linux内存操作----kernel 3.5.X copy_from_user()和copy_to_user()
    猜数字游戏
    pthread_t definition
    POJ 2057 The Lost House
    简单截图功能实现
    java实现罗马数字转十进制
  • 原文地址:https://www.cnblogs.com/dengbingbing/p/12330569.html
Copyright © 2011-2022 走看看