Python:如何创建具有对象和属性的类

2024-06-16 19:56:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉。我正在学习面向对象编程。我想创建一个包含3个对象的类,每个对象有5个属性。你知道吗

我的类被称为“Slot”,三个对象被称为“CPM”、“IOM”、“MDA”,三个对象都有相同的五个属性

1)SerialNumber 
2)PartNumber
3)Name 
4)Status
5)Type

你能给我一个例子,我如何可以做到这一点,我如何打印所有5个属性时,对象被创建。你知道吗

任何例子都会更受欢迎,即使他们有不同的名字。你知道吗


Tags: 对象name属性typestatus名字例子slot
3条回答

你的问题似乎很基本。你可以很容易地找到信息。。。 听起来你只是想找个人为你工作。你知道吗

但这次让我们给它一点时间。 如果我知道你想要3个“槽”结构的实例。就这样? 一种可能性是:

class Slot:
# the '__init__' method is the constructor
# the first argument must be 'self' (as with any method belonging to the class)
#the advantage of giving default values (here 'None') is that you do not have to care the parameter order when calling the method
    def __init__(self,SerialNumber=None,PartNumber=None,
                 Name=None,Status=None,Type=None):
        self.SerialNumber = SerialNumber
        self.PartNumber = PartNumber
        self.Name = Name
        self.Status = Status
        self.Type = Type
        print('Name: ',Name,' ; SerialNumber: ',SerialNumber,
              ' ; PartNumber: ',PartNumber,
              ' ; Status: ',Status,' ; Type: ',Type)

# further in the code, you create the instances of the object Slot
CPM = Slot(Name='CPM', PartNumber='toto', Type='poo')# just to show you can give any parameter in any order
IOM = Slot(Name='IOM')
MDA = Slot(Name='MDA')
# to access the values of instances:
print('CPM name: ',CPM.Name)
print('CPM Type: ', CPM.Type)
CPM.Type = 'paa'
#...

下面的示例应该按照您的要求执行。在我看来,让类初始值设定项打印出信息是不明智的,因此在main函数中执行手动打印。改变这一点将是微不足道的,但作为一个练习留给读者。你知道吗

#! /usr/bin/env python3


def main():
    cpm = Widget(12, 34, 'A', True, int)
    iom = Widget(56, 78, 'B', False, str)
    mda = Widget(90, 12, 'C', None, bytes)
    s = Slot(cpm, iom, mda)
    print(s)


class Slot:

    def __init__(self, cpm, iom, mda):
        self.cpm = cpm
        self.iom = iom
        self.mda = mda

    def __repr__(self):
        return '{!s}({!r}, {!r}, {!r})'.format(
            type(self).__name__, self.cpm, self.iom, self.mda)


class Widget:

    def __init__(self, serial_number, part_number, name, status, kind):
        self.serial_number = serial_number
        self.part_number = part_number
        self.name = name
        self.status = status
        self.kind = kind

    def __repr__(self):
        return '{!s}({!r}, {!r}, {!r}, {!r}, {!r})'.format(type(self).__name__,
                                                           self.serial_number,
                                                           self.part_number,
                                                           self.name,
                                                           self.status,
                                                           self.kind)


if __name__ == '__main__':
    main()

这应该做到:

class Slot:
    def __init__(*parameters*):
        self.cpm = CPM.CPM(*sub parameters*)
        self.iom = IOM.IOM(*sub parameters*)
        self.mda = MDA.MDA(*sub parameters*)



class CPM:
    def __init__(*sub parameters*):
        self.SerialNumber = *parameter*
        self.PartNumber = *parameter*
        self.Name = *parameter*
        self.Status = *parameter*
        self.Type = *parameter*

        print 'CPM:\n\tSerialNumber: '+self.SerialNumber\n\tPartNumber: '+self.PartNumber\n\tName: '+self.Name\n\tStatus: '+self.Status\n\tType: '+self.Type

class IOM:
    def __init__(*sub parameters*):
        self.SerialNumber = *parameter*
        self.PartNumber = *parameter*
        self.Name = *parameter*
        self.Status = *parameter*
        self.Type = *parameter*

        print 'IOM:\n\tSerialNumber: '+self.SerialNumber\n\tPartNumber: '+self.PartNumber\n\tName: '+self.Name\n\tStatus: '+self.Status\n\tType: '+self.Type

class MDA:
    def __init__(*sub parameters*):
        self.SerialNumber = *parameter*
        self.PartNumber = *parameter*
        self.Name = *parameter*
        self.Status = *parameter*
        self.Type = *parameter*

        print 'MDA:\n\tSerialNumber: '+self.SerialNumber\n\tPartNumber: '+self.PartNumber\n\tName: '+self.Name\n\tStatus: '+self.Status\n\tType: '+self.Type

slot = Slot.Slot(*parameters*)

相关问题 更多 >