【问题标题】:Nested Classes Python and Indentation errors嵌套类 Python 和缩进错误
【发布时间】:2014-07-22 12:30:36
【问题描述】:

在 Python 中,我创建了几个嵌套类,但不断出现缩进错误。我认为缩进没有任何问题,并且没有想法。

目前的错误是 [error] SyntaxError (!!WHILE IMPORTING!! mismatched input 'self' Expecting INDENT (patient.py, line 69))

从 sikuli 进口 *

类病人():

firstname = ""
middlename
Surname = ""
title = ""
ppsno = ""
gender = ""
testID = ""
birthDate = ""
address1 = ""
address2 = ""
address3 = ""
address4 = ""
town = ""
county = ""
country = ""
email = ""
mobile = ""

#Default Constructor for the class patient
def __init__(
    self, 
    testID, 
    firstname = None, 
    surname = None, 
    gender = None, 
    birthDate = None):


    self.testID = testID
    if (firstname is None): 
        firstname = "Test"             
        self.firstname = firstname        
    if (surname is None): 
        surname = "Patient"
        self.surname = surname        
    if (gender is None): 
        gender = "Male"               
        self.gender = gender        
    if (birthDate is None): 
        birthDate = "08081988"             
        self.birthDate = birthDatename

#Use this to create a patient with more detailed information

def __init__(
    self, 
    testID, 
    firstname = None, 
    middlename = None, 
    surname = None, 
    gender = None, 
    birthDate = None, 
    title = None, 
    ppsno = None, 
    address1 = None, 
    address2 = None, 
    address3 = None, 
    address4 = None, 
    town = None, 
    county = None, 
    country = None, 
    email = None, 
    mobile = None):

    self.testID = testID

    if (firstname is None): 
        firstname = "Sample"             
        self.firstname = firstname        
    if (surname is None): 
        surname = "Patient"               
        self.surname = surname  
    if (middlename is None): 
        middlename = "Mary"             
        self.middlename = middlename
    if (gender is None): 
        gender = "Female"               
        self.gender = gender        
    if (birthDate is None): 
        birthDate = "03091959"             
        self.birthDate = birthDatename
    if (title is None): 
        title = "Mrs"             
        self.title = title
    if (ppsno is None): 
        ppsno = "7445213P"             
        self.ppsno = ppsno           
    if (address1 is None): 
        address1 = "100"             
        self.address1 = address1    
    if (address2 is None): 
        address2 = "Green Glade"             
        self.address1 = address1
    if (address3 is None): 
        address3 = "Pleasent Way"             
        self.address3 = address3
    if (address4 is None): 
        address4 = "Ballybehy"             
        self.address4 = address4
    if (town is None): 
        town = "Abbeyfeale"             
        self.town = town
    if (county is None): 
        county = "Limerick"             
        self.county = county
    if (country is None): 
        country = "Ireland"             
        self.country = country
    if (email is None): 
        email = "supertest69@freewebmail.ie"             
        self.email = email
    if (mobile is None): 
        mobile = "0870563229"             
        self.mobile = mobile

def getStuff(self):
     #return self.stuff

class schemeDetails(): 
    cardNumber = ""
    scheme = ""
    cardNumber = ""
    month = ""
    year = ""
    setSchemeAsDefault = ""

    def __init__(
        self, 
        scheme = None, 
        cardNumber = None, 
        month = None, 
        year = None, 
        setSchemeAsDefault = None ):

        if (scheme is None): 
            scheme = "GM"
            self.scheme = scheme
        if (cardNumber is None): 
            month = "1231456A"
            self.cardNumber = cardNumber
        if (month is None): 
            month = "September"
            self.month = month
        if (year is None): 
            year = "2015"
            self.year = year
        if (setSchemeAsDefault is None): 
            setSchemeAsDefault = "true"
            self.setSchemeAsDefault = setSchemeAsDefault

    def getStuff(self):
        #return self.stuff

#Inner class for creating basic dispenses
class basicDispense():
    drug = ""
    packSize = ""
    dosageSystem = ""
    scheme = ""
    #Constructor for the class basicDispense
    def __init__(
        self, 
        drug = None, 
        packSize = None, 
        dosageSystem = None, 
        scheme = None):

        if (drug is None): 
            drug = "ABBOTT THIN LANCET TYPE C GMS"
            self.drug = drug
        if (packSize is None): 
            packSize = "28"
            self.packSize = packSize
        if (dosageSystem is None): 
            dosageSystem = "MD"
            self.dosageSystem = dosageSystem
        if (scheme is None): 
            scheme = "GM"
            self.scheme = scheme

        def getStuff(self):
            #return self.stuff


    #Inner class of basicDispenses for printing Labels    
    #Constructor for the class Labels       
    class labels():
        def __init__(
            self, 
            testID, 
            printBagLabel = None, 
            printDrugLabel = None):                    

            self.testID = testID
            if (printBagLabel is None): 
                printBagLabel = "false"
                self.drug = drug
            if (printDrugLabel is None): 
                printDrugLabel = "false"
                self.printDrugLabel = printDrugLabel

【问题讨论】:

  • 你应该显示代码。
  • 对不起..我现在把它放进去
  • 是的,但是输入问题,并用代码格式{}进行格式化

标签: python class nested indentation


【解决方案1】:

我刚刚查看了您的代码,您使用的是空格,第 23、33、172 行应该都是空格而不是制表符。第 69-118 行都应该用空格缩进。好的,所以你在 return 语句上的 cmets 把事情搞砸了,这段代码编译得很好。另外,您没有将 middleName 初始化为任何内容,因此我将其初始化为“”。

firstname = ""
middlename = ""
Surname = ""
title = ""
ppsno = ""
gender = ""
testID = ""
birthDate = ""
address1 = ""
address2 = ""
address3 = ""
address4 = ""
town = ""
county = ""
country = ""
email = ""
mobile = ""

#Default Constructor for the class patient
def __init__(
    self,
    testID,
    firstname = None,
    surname = None,
    gender = None,
    birthDate = None):


    self.testID = testID
    if (firstname is None):
        firstname = "Test"
        self.firstname = firstname
    if (surname is None):
        surname = "Patient"
        self.surname = surname
    if (gender is None):
        gender = "Male"
        self.gender = gender
    if (birthDate is None):
        birthDate = "08081988"
        self.birthDate = birthDatename

#Use this to create a patient with more detailed information

def __init__(
    self,
    testID,
    firstname = None,
    middlename = None,
    surname = None,
    gender = None,
    birthDate = None,
    title = None,
    ppsno = None,
    address1 = None,
    address2 = None,
    address3 = None,
    address4 = None,
    town = None,
    county = None,
    country = None,
    email = None,
    mobile = None):

    self.testID = testID

    if (firstname is None):
        firstname = "Sample"
        self.firstname = firstname
    if (surname is None):
        surname = "Patient"
        self.surname = surname
    if (middlename is None):
        middlename = "Mary"
        self.middlename = middlename
    if (gender is None):
        gender = "Female"
        self.gender = gender
    if (birthDate is None):
        birthDate = "03091959"
        self.birthDate = birthDatename
    if (title is None):
        title = "Mrs"
        self.title = title
    if (ppsno is None):
        ppsno = "7445213P"
        self.ppsno = ppsno
    if (address1 is None):
        address1 = "100"
        self.address1 = address1
    if (address2 is None):
        address2 = "Green Glade"
        self.address1 = address1
    if (address3 is None):
        address3 = "Pleasent Way"
        self.address3 = address3
    if (address4 is None):
        address4 = "Ballybehy"
        self.address4 = address4
    if (town is None):
        town = "Abbeyfeale"
        self.town = town
    if (county is None):
        county = "Limerick"
        self.county = county
    if (country is None):
        country = "Ireland"
        self.country = country
    if (email is None):
        email = "supertest69@freewebmail.ie"
        self.email = email
    if (mobile is None):
        mobile = "0870563229"
        self.mobile = mobile

def getStuff(self):
     return self.stuff

class schemeDetails():
    cardNumber = ""
    scheme = ""
    cardNumber = ""
    month = ""
    year = ""
    setSchemeAsDefault = ""

    def __init__(
        self,
        scheme = None,
        cardNumber = None,
        month = None,
        year = None,
        setSchemeAsDefault = None ):

        if (scheme is None):
            scheme = "GM"
            self.scheme = scheme
        if (cardNumber is None):
            month = "1231456A"
            self.cardNumber = cardNumber
        if (month is None):
            month = "September"
            self.month = month
        if (year is None):
            year = "2015"
            self.year = year
        if (setSchemeAsDefault is None):
            setSchemeAsDefault = "true"
            self.setSchemeAsDefault = setSchemeAsDefault

    def getStuff(self):
        return self.stuff

#Inner class for creating basic dispenses
class basicDispense():
    drug = ""
    packSize = ""
    dosageSystem = ""
    scheme = ""
    #Constructor for the class basicDispense
    def __init__(
        self,
        drug = None,
        packSize = None,
        dosageSystem = None,
        scheme = None):

        if (drug is None):
            drug = "ABBOTT THIN LANCET TYPE C GMS"
            self.drug = drug
        if (packSize is None):
            packSize = "28"
            self.packSize = packSize
        if (dosageSystem is None):
            dosageSystem = "MD"
            self.dosageSystem = dosageSystem
        if (scheme is None):
            scheme = "GM"
            self.scheme = scheme

        def getStuff(self):
            return self.stuff


    #Inner class of basicDispenses for printing Labels
    #Constructor for the class Labels
    class labels():
        def __init__(
            self,
            testID,
            printBagLabel = None,
            printDrugLabel = None):

            self.testID = testID
            if (printBagLabel is None):
                printBagLabel = "false"
                self.drug = drug
            if (printDrugLabel is None):
                printDrugLabel = "false"
                self.printDrugLabel = printDrugLabel

【讨论】:

  • 我只使用空格键重新调整了所有内容,它可以工作。到目前为止,我一直使用 tab - 是否建议只使用空间?
  • 根据Style Guide for Python Code,您应该只使用空格。
【解决方案2】:

打开文件,按Ctrl + A,进入菜单Edit -> Blank Operations -> TAB to space,然后所有的文字都固定了,标识变成了空格。

Sublime Text 在这种情况下更加一致。

【讨论】:

    猜你喜欢
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多