制作一个类实例来分离和组织类

时间:2019-05-23 03:41:03

标签: python-3.x

我想制作一个Python程序,通过允许我输入获得的数据来帮助选择Nerf战争负荷,例如枪射击的距离,枪的大小,重量,类型等。那么我想创建不同的功能,这些功能将使我能够构建最佳构建,例如狙击构建。

我上了一堂课,所以我可以将每把枪的所有信息输入到自己的课上。

我不确定如何制作诸如“狙击手”之类的功能,该功能将仅拉动狙击手类型,然后按其射击距离将其排序。

我正在考虑for循环,但是我不确定如何处理它。

class Nerf_Gun:

    def __init__(self, name, size, weight, DPS, distance, slots, type):
        self.name = name
        self.size = size
        self.weight = weight
        self.DPS = DPS
        self.distance = distance
        self.slots = slots
        self.type = type

    def sniper(self):
        if Nerf_Gun.type() == "Sniper":

1 个答案:

答案 0 :(得分:0)

您要创建可能属于广义类别的不同类型的枪支,因此您正在寻找inheritance的概念。查找https://www.w3schools.com/python/python_inheritance.asp。通常,如果您希望使这些属性可针对枪支的每个“实例”进行配置,则可以通过attrs进行设置。

@attr.s
class Gun:
    name: str = attr.ib()
    size: int = attr.ib()
    weight: int = attr.ib()
    DPS: str = attr.ib()
    distance: str = attr.ib()
    slots: str = attr.ib()
    type: str = attr.ib()

Sniper = attr.make_class('Sniper', {}, bases=(Gun,))

#initialize instance
nerf_gun = Sniper(name='sniper', size=2, weight=3, DPS='123', distance='123', slots='456', type='789')

您可以尝试使这些属性成为可选属性,或者在Sniper类等中覆盖它们。

但是,如果要在整个类中使它们保持恒定(所有狙击手的每把枪都具有相同的值),我将像以前一样使用变量初始化类,但为Sniper创建子类,如下所示:< / p>

class Sniper(Nerf_Gun):
    def __init__(self):
        self.name = 'Sniper'
        self.weight = 123
        # fix the rest of attrs