Czy można sobie za pomocą funkcji obiektatrybuty() wydrukować atrybuty jakiegoś obiektu, albo jego metody? Np. podajemy w inpucie 'p1.bok2, albo p1.pole() i to się wykonuje. Problemem jest oczywiście string, który wychodzi z inputa.
Przypuszczam, że nikt tak nie robi (i nie powinno się tak robić), ale ciekawi mnie, czy jest to w ogóle wykonalne.
def obiekt_atrybut2(self): wybor = input('Co do wyprintowania? ') print(getattr(self, wybor)) obiekt_atrybut2(p1) Ok, tak jak wyżej zadziała. Ale jeżeli w inpucie podalibyśmy jako całość np. 'p1.bok2', albo 'p1.pole()', to wtedy jak to można wywołać jak to będzie string?
@Rajtuz: to już powstanie jakiś potworek. Nie rób tak, bo nie widzę tutaj sensu tego robienia. Da się to zrobić poprzez instance, attr = wybór.split(".") result = gettatr(globals[instance], attr) if
class Prostokat:....def __init__(self, bok1, bok2):
........self.bok1 = bok1
........self.bok2 = bok2
....def pole(self):........print(self.bok1 * self.bok2)
p1 = Prostokat(3, 5)def obiekt_atrybut():....wybor = input('Co do wyprintowania? ')
....pass
-----------------------------------------------------------------------------------------------------------------
Czy można sobie za pomocą funkcji obiektatrybuty() wydrukować atrybuty jakiegoś obiektu, albo jego metody? Np. podajemy w inpucie 'p1.bok2, albo p1.pole() i to się wykonuje. Problemem jest oczywiście string, który wychodzi z inputa.
Przypuszczam, że nikt tak nie robi (i nie powinno się tak robić), ale ciekawi mnie, czy jest to w ogóle wykonalne.
#python #naukaprogramowania
def obiekt_atrybut2(self):wybor = input('Co do wyprintowania? ')
print(getattr(self, wybor))
obiekt_atrybut2(p1)Ok, tak jak wyżej zadziała. Ale jeżeli w inpucie podalibyśmy jako całość np. 'p1.bok2', albo 'p1.pole()', to wtedy jak to można wywołać jak to będzie string?
Da się to zrobić poprzez
instance, attr = wybór.split(".")
result = gettatr(globals[instance], attr)
if