1

私はpythonを学んでおり、現在、私が書いたモジュールの入力から引数に値を渡そうとしていますが、開始方法がわかりません。

誰かアドバイスをくれませんか?

これは私が呼び出しているモジュールです

#!/usr/bin/python

class Employee:
    'Practice class'
    empCount = 0

    def __init__(self, salary):
            self.salary = salary
            Employee.empCount += 1
    def displayCount(self):
            print "Total Employees %d" % Employee.empCount

    def displayEmployee(self):
            print "Salary: ", self.salary


class Att(Employee):
    'Defines attributes for Employees'
    def __init__(self, Age, Name, Sex):
            self.Age = Age
            self.Name = Name
            self.Sex = Sex

    def display(self):
            print "Name: ", self.Name + "\nAge: ", self.Age,  "\nSex: ", self.Sex

これは、上記のモジュールの引数を呼び出して値を渡すために使用するコードです

#!/usr/bin/python

import Employee

def Collection1():
    while True:
            Employee.Age = int(raw_input("How old are you? "))
            if Employee.Age == str(Employee.Age):

                    print "You entered " + Employee.Age + " Please enter a number"
            elif Employee.Age  > 10:
                    break
            elif Employee.Age > 100:
                    print "Please enter a sensible age"
            else:
                    print "Please enter an age greater than 10"
    return str(Employee.Age)

def Collection2():
    Employee.Name = raw_input("What is your name? ")
    return Employee.Name


def Collection3():
    while True:
            Employee.Sex = str(raw_input("Are you a man or a woman? "))
            if Employee.Sex == "man":
                    Employee.Sex = "man"
                    return Employee.Sex
                    break
            elif Employee.Sex == "woman":
                    Employee.Sex = "woman"
                    return Employee.Sex
                    break
            else:
                    print "Please enter man or woman "
Attributes = Employee.Employee()

Collection1()
Collection2()
Collection3()


Attributes.displayEmployee()

ユーザーからの入力を取得して、クラスの変数に配置する必要があると思います。私はそれを試しましたが、私はすべて間違っていると思いますか??

4

1 に答える 1

1

Employee.Age = int(raw_input("How old are you? ")) ローカル変数を使用する代わりにモジュール内で変数を設定したり、Collection1() 関数の外部で設定する必要があるものを設定したりする必要はありません。従業員 (オブジェクト) 属性を設定しているのではなく、モジュールの属性を設定していることに注意してください。これは、おそらくあなたが望むものではありません。また、慣例により、関数は最初の小文字で名前を付ける必要があります。

あなたの継承モデルは少し奇妙です。従業員属性が別の (サブ) クラスにあるのはなぜですか? 通常、属性はメイン クラスのコンストラクターに入ります。属性に別のクラスを本当に使用したい場合は、この場合、サブクラスをまったく使用しないでください。

編集 これがあなたが意図したことだと思います:

#!/usr/bin/python

class Employee:
    def __init__(self, salary, age, name, sex):
            self.salary =   salary
            self.age=       age
            self.name=      name
            self.sex=       sex
            #Employee.empCount += 1 #don't do this. you should count instances OUTSIDE

    def __str__(self):
            return "Employee<Name: {0}, Age: {1}, Sex: {2}, Salary: {3}>".format( self.name, self.age, self.sex, self.salary)



def getAge():
    while True:
        try:
            s=raw_input("How old are you? ")
            age = int(s)
            if age > 100:
                print "Please enter a sensible age"
            elif age<=10:
                print "Please enter an age greater than 10"
            else:
                return age
        except ValueError:
            print "You entered " + s + " Please enter a number"

def getName():
    return raw_input("What is your name? ")


def getSex():
    while True:
        sex = str(raw_input("Are you a man or a woman? "))
        if not sex in ("man", "woman"):
            print "Please enter man or woman "
        else:
            return sex



age= getAge()
name= getName()
sex= getSex()
salary=100000

employee = Employee(salary, age, name, sex)
print employee

従業員を別のファイル (モジュール) に入れたい場合は、そこに配置して、メイン コードから実行しますfrom Employee import Employee(最初はモジュール、2 番目はクラスです)。

于 2012-11-11T21:03:25.133 に答える