我決定自己研究python的OOP。在“car”類中,我創建了“carHP”函式,然后我想把這個函式的結果寫入到“power”變數中,但是編譯器拋出了一個錯誤。可能是什么問題呢?我寫的沒有類,一切正常,但是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()
uj5u.com熱心網友回復:
您需要了解python oop的基礎知識,因為您使用的是類變數而不是實體變數,請研究兩者的區別并簡化邏輯
這是一個更好的開始方式
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}")
uj5u.com熱心網友回復:
通過對您的代碼進行一些調整,我發現一些事情可以解決我的問題。去看一下...
我注意到你沒有呼叫函式 carHP() 這在初始化 HP car 時可能很重要:到 666
person1=person()
person1.namePerson=input("Enter your name: ")
car1=car()
car1.nameCar=input("Enter car name: ")
person1.infoPerson()
car1.infoCar()
其次,類方法內部的繼承不會自動接收實體。他們需要自我。引數來接收它來自的方法的內容。否則,您將回傳該變數的實體,但沒有其父方法
如果這沒有意義,我深表歉意。但請查看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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/380224.html
