| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 470 人关注过本帖
标题:初学者求教,关于python,类定义完成没有实例就自己运行了?
只看楼主 加入收藏
haoyunzk
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-8-28
结帖率:0
收藏
已结贴  问题点数:1 回复次数:5 
初学者求教,关于python,类定义完成没有实例就自己运行了?



这个代码写好了之后,完全自动运行让后关闭,为了查清楚在哪出问题 我又写了 一些print()进去  但是我学习的书上告诉我 类只有实例之后才能用 ,为啥我定义的类直接就自己运行了 就是写好的函数再没有调用之前也不可能自己运行吧?
程序代码:
from sys import exit
from random import randint
from textwrap import dedent

print("从这里开始的?")
class Engine(object):  
    # 非得带object? Engine 意思是引擎 游戏的引擎
    def __init__(self, fangjianming):
        self.name = fangjianming

    def play(self):
        dqcj = self.name.dakai()
        zzcj = self.name.xiayige('zuihou')
        while dqcj != zzcj:
            print("到这里了吗")
            xiagechangjing = dqcj.enter()  # dqcj就是获得的类名字 用xingechangjing 来实例化
            dqcj = self.name.xiayige(xiagechangjing)
        dqcj.enter()

print("从这里开始的?1")
class Fj1():
    print("""这是第一个房间
            这个房间你可以寻找到武器,
            试着输入 xunzhao  tuichu 
            """)

    def enter(self):

        choice = input("输入提示让你输入的>>>>>  ")
        if choice == "xunzhao":
            print("你找到了一把枪")
            return 'fj1'
        elif choice == "tuichu":
            print("你回到了走廊")
            return 'zoulang'
        else:
            print("你说的什么啊?")
            return 'fj1'

print("从这里开始的?2")
class Fj2():
    print("""这是第二个房间
            这个房间你可以寻找到炸弹,
            试着输入 xunzhao  tuichu 
            """)

    def enter(self):
        choice = input("输入提示让你输入的>>>>>  ")
        if choice == "xunzhao":
            print("你找到了一个炸弹")
            return 'fj2'
            # 这里完善的时候可以加一个判断,如果已经找到炸弹  炸弹类里面的属性变为真,则输出不能再找到炸弹
        elif choice == "tuichu":
            print("你回到了走廊")
            return 'zoulang'
        else:
            print("你说的什么啊?")
            return 'fj2'

print("从这里开始的?3")
class Zoulang():
    print("""这是一个走廊.
            从这里你可以进入飞船上的房间,
            试着输入 fj1 fj2 zoulang end
            """)

    def enter(self):
        choice = input("输入提示让你输入的>>>>>  ")
        if choice == "fj1":
            print("你走到了房间1的门前,准备进入")
            return 'fj1'
            # 这里完善的时候可以加一个判断,如果已经找到炸弹  炸弹类里面的属性变为真,则输出不能再找到炸弹
        elif choice == "fj2":
            print("你走到了房间2的门前,准备进入")
            return 'fj2'
        elif choice == "zuihou":
            print("你不想玩了")
            return 'zuihou'
        else:
            print("你说的什么啊?")
            return 'zoulang'

print("从这里开始的?4")
class zuizhong():
    print("你完成了整个游戏")
    #exit(1)

print("从这里开始的?5")
class Map(object):
    mapname = {
        'fj1': Fj1(),
        'fj2': Fj2(),
        'zoulang': Zoulang(),
        'zuihou': zuizhong(),
    }
    print("这里你总要运转到吧")
    def __init__(self, start_name):
        self.start_name = start_name

    def xiayige(self, fangjianming):
        val = Map.mapname.get(fangjianming)
        return val
        print("1",val)
    def dakai(self):
        return self.xiayige(self.start_name)
        print("2",self.xiayige(self.start_name))

#a_test = Map('fj2')
print("zheli?")
#a_game = Engine(a_test)
print("haishizheli?")
#a_game.play
print("zuihouzheli?")
附件: 游客没有浏览附件的权限,请 登录注册
搜索更多相关主题的帖子: def print return 输入 choice 
2020-08-28 18:27
haoyunzk
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-8-28
收藏
得分:0 
后面三个实例化类的 语句 我都再前面加了 #号  我在powerShell 里面用 python fc.py 这种方式运行的
2020-08-28 18:32
haoyunzk
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-8-28
收藏
得分:0 
程序代码:
class test():
    print("这是一个测试")
    def enter(self, name):
        self.name = name
        print(self.name)
class test2():
    def enter(self,name):
        print("这里写到类的def里面")
        self.name = name
        print(self.nanme)
class Fj1():
    print("""这是第一个房间
            这个房间你可以寻找到武器,
            试着输入 xunzhao  tuichu 
            """)

    def enter(self):

        choice = input("输入提示让你输入的>>>>>  ")
        if choice == "xunzhao":
            print("你找到了一把枪")
            return 'fj1'
        elif choice == "tuichu":
            print("你回到了走廊")
            return 'zoulang'
        else:
            print("你说的什么啊?")
            return 'fj1'

这次弄简明点 求大佬帮忙看下,  刚开始写了一个测试文档
程序代码:
class test():
    print("这是一个测试")
    def enter(self, name):
        self.name = name
        print(self.name)
class test2():
    def enter(self,name):
        print("这里写到类的def里面")
        self.name = name
        print(self.nanme)

这个的运行 之后 没有任何反应 如下图
但是我把再把找个代码复制到我写的测试文档里面 就出鬼了 我把代码粘贴到下面
程序代码:
class Fj1():
    print("""这是第一个房间
            这个房间你可以寻找到武器,
            试着输入 xunzhao  tuichu 
            """)

    def enter(self):

        choice = input("输入提示让你输入的>>>>>  ")
        if choice == "xunzhao":
            print("你找到了一把枪")
            return 'fj1'
        elif choice == "tuichu":
            print("你回到了走廊")
            return 'zoulang'
        else:
            print("你说的什么啊?")
            return 'fj1'

这段代码再粘贴进去  不加任何实例化语句 让后再运行一次 就变成这样了如下图
附件: 游客没有浏览附件的权限,请 登录注册
2020-08-28 18:50
fall_bernana
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:10
帖 子:130
专家分:1083
注 册:2019-8-16
收藏
得分:1 
回复 3楼 haoyunzk
但是我学习的书上告诉我 类只有实例之后才能用 ,为啥我定义的类直接就自己运行了 就是写好的函数再没有调用之前也不可能自己运行吧?

这个定义的类不是不运行。他也需要初始化,不然你实例他的时候他也不知道你说的是啥,你可以理解为在内存划了一块地,把类的内容放进去,标出了test,test1。只是他要求他的方法以及类的变量需要实例化后才能调用。比如你把这些print放到方法里就不会打印出来了。

[此贴子已经被作者于2020-8-31 09:45编辑过]

2020-08-31 09:42
sssooosss
Rank: 4
等 级:业余侠客
威 望:3
帖 子:127
专家分:282
注 册:2019-8-27
收藏
得分:1 
楼上这广告。。。
2020-09-03 08:31
hello_py
Rank: 2
等 级:论坛游民
威 望:1
帖 子:9
专家分:27
注 册:2019-4-21
收藏
得分:0 
貌似不能在def之前加内容,后面的都没有运行
2020-09-16 11:02
快速回复:初学者求教,关于python,类定义完成没有实例就自己运行了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.074001 second(s), 8 queries.
Copyright©2004-2020, BCCN.NET, All Rights Reserved