Python OOP 问题
Problems with Python OOP
我决定自学python的OOP。在“car”class中,我创建了“carHP”函数,然后我想将这个函数的结果写入“power”变量,但是编译器抛出错误。可能是什么问题呢?我没有写class,一切正常,但是OOP的意义就失去了
class car():
nameCar=""
def carHP(self):
if self.nameCar=="BMW":
HP=666
return HP
power=carHP()
def infoCar(self):
print("You owner: ", self.nameCar)
print("HP car: ", self.power )
class person():
namePerson=""
def infoPerson(self):
print("Ваше имя: ",self.namePerson)
person1=person()
person1.namePerson=input("Enter your name: ")
car1=car()
car1.nameCar=input("Enter car name: ")
person1.infoPerson()
car1.infoCar()
您需要了解 python oop 的基础知识,因为您使用的是 class 变量而不是实例变量,研究两者的区别并简化逻辑
这里有一个更好的开始方式
class Car:
def __init__(self, car_name, car_hp=100):
self.car_name = car_name
self.car_hp = car_hp
class Person:
def __init__(self, person_name):
self.person_name = person_name
def person_info(self):
print(f"Person Name: {self.person_name}")
通过对您的代码进行一些调整,我发现了一些对我有用的东西。检查它们...
我注意到您没有调用 carHP() 函数,该函数在初始化 HP 汽车时可能很重要:至 666
person1=person()
person1.namePerson=input("Enter your name: ")
car1=car()
car1.nameCar=input("Enter car name: ")
person1.infoPerson()
car1.infoCar()
其次,class 方法中的继承不会自动接收实例。他们需要自我。参数来接收它来自的方法的内容。否则,您将返回该变量的实例但没有其父方法
如果这没有意义,我深表歉意。但请查看 https://docs.python.org/3/tutorial/classes.html 了解更多信息。
添加 self 参数并将函数调用为条件语句后,我们得到以下输出...
class car:
nameCar = ""
power = None
def carHP(self):
if self.nameCar == "BMW":
HP = 666
self.power = HP # notice this change
def infoCar(self):
print("You owner: ", self.nameCar)
print("HP car: ", self.power)
class person():
namePerson = ""
def infoPerson(self):
print("Ваше имя: ", self.namePerson)
person1 = person()
person1.namePerson = input(str("Enter your name: "))
car1 = car()
car1.nameCar = input(str("Enter car name: "))
car1.carHP() # notice this change
person1.infoPerson()
car1.infoCar()
输出:
Enter your name: Name
Enter car name: BMW
Ваше имя: Name
You owner: BMW
HP car: 666
Process finished with exit code 0
我决定自学python的OOP。在“car”class中,我创建了“carHP”函数,然后我想将这个函数的结果写入“power”变量,但是编译器抛出错误。可能是什么问题呢?我没有写class,一切正常,但是OOP的意义就失去了
class car():
nameCar=""
def carHP(self):
if self.nameCar=="BMW":
HP=666
return HP
power=carHP()
def infoCar(self):
print("You owner: ", self.nameCar)
print("HP car: ", self.power )
class person():
namePerson=""
def infoPerson(self):
print("Ваше имя: ",self.namePerson)
person1=person()
person1.namePerson=input("Enter your name: ")
car1=car()
car1.nameCar=input("Enter car name: ")
person1.infoPerson()
car1.infoCar()
您需要了解 python oop 的基础知识,因为您使用的是 class 变量而不是实例变量,研究两者的区别并简化逻辑
这里有一个更好的开始方式
class Car:
def __init__(self, car_name, car_hp=100):
self.car_name = car_name
self.car_hp = car_hp
class Person:
def __init__(self, person_name):
self.person_name = person_name
def person_info(self):
print(f"Person Name: {self.person_name}")
通过对您的代码进行一些调整,我发现了一些对我有用的东西。检查它们...
我注意到您没有调用 carHP() 函数,该函数在初始化 HP 汽车时可能很重要:至 666
person1=person()
person1.namePerson=input("Enter your name: ")
car1=car()
car1.nameCar=input("Enter car name: ")
person1.infoPerson()
car1.infoCar()
其次,class 方法中的继承不会自动接收实例。他们需要自我。参数来接收它来自的方法的内容。否则,您将返回该变量的实例但没有其父方法
如果这没有意义,我深表歉意。但请查看 https://docs.python.org/3/tutorial/classes.html 了解更多信息。
添加 self 参数并将函数调用为条件语句后,我们得到以下输出...
class car:
nameCar = ""
power = None
def carHP(self):
if self.nameCar == "BMW":
HP = 666
self.power = HP # notice this change
def infoCar(self):
print("You owner: ", self.nameCar)
print("HP car: ", self.power)
class person():
namePerson = ""
def infoPerson(self):
print("Ваше имя: ", self.namePerson)
person1 = person()
person1.namePerson = input(str("Enter your name: "))
car1 = car()
car1.nameCar = input(str("Enter car name: "))
car1.carHP() # notice this change
person1.infoPerson()
car1.infoCar()
输出:
Enter your name: Name
Enter car name: BMW
Ваше имя: Name
You owner: BMW
HP car: 666
Process finished with exit code 0